Java多种方法实现合并多个list对象列表

 更新时间:2024年09月21日 09:36:55   作者:wzw45233  
Java编程中,合并多个列表对象可以通过Stream API或传统循环方式实现,使用Stream API合并时,利用flatMap方法将嵌套的List展平,再通过collect方法收集成一个新的列表,传统循环则通过创建一个空的ArrayList,并通过遍历每个列表将元素添加进去

在 Java 中,将多个对象的列表数据合并成一个新的列表可以通过多种方式实现。假设有一个 List 的列表,每个列表都包含相同类型的对象,可以使用 Stream API 或传统的循环来实现这一目标。

示例代码User 类

假设我们有一个 User 类:

public class User {
    private String name;
    private int age;

    public User(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "User{name='" + name + "', age=" + age + "}";
    }
}

使用 Stream API

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

public class MergeListsExample {

    public static void main(String[] args) {
        List<User> list1 = Arrays.asList(
            new User("Alice", 30),
            new User("Bob", 25)
        );

        List<User> list2 = Arrays.asList(
            new User("Charlie", 35),
            new User("Diana", 28)
        );

        List<User> list3 = Arrays.asList(
            new User("Eve", 22),
            new User("Frank", 31)
        );

        List<List<User>> listOfLists = Arrays.asList(list1, list2, list3);

        // 使用 Stream API 合并列表
        List<User> mergedList = listOfLists.stream()
            .flatMap(List::stream)
            .collect(Collectors.toList());

        // 输出合并后的列表
        mergedList.forEach(System.out::println);
    }
}

使用传统循环

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class MergeListsExample {

    public static void main(String[] args) {
        List<User> list1 = Arrays.asList(
            new User("Alice", 30),
            new User("Bob", 25)
        );

        List<User> list2 = Arrays.asList(
            new User("Charlie", 35),
            new User("Diana", 28)
        );

        List<User> list3 = Arrays.asList(
            new User("Eve", 22),
            new User("Frank", 31)
        );

        List<List<User>> listOfLists = Arrays.asList(list1, list2, list3);

        // 使用传统循环合并列表
        List<User> mergedList = new ArrayList<>();
        for (List<User> list : listOfLists) {
            mergedList.addAll(list);
        }

        // 输出合并后的列表
        mergedList.forEach(System.out::println);
    }
}

解释

定义 User 类:

  • User 类包含 nameage 属性,并提供相应的 getter 和 setter 方法。
  • 重写了 toString 方法以便于输出。

创建多个 List

  • 创建了三个 List<User> 对象,每个列表包含几个 User 对象。

使用 Stream API 合并列表:

  • listOfLists.stream():将 List<List<User>> 转换为 Stream<List<User>>
  • flatMap(List::stream):将每个 List<User> 转换为 Stream<User>,并将其展平为一个单一的 Stream<User>
  • collect(Collectors.toList()):将 Stream<User> 收集为一个 List<User>

使用传统循环合并列表:

  • 创建一个空的 ArrayList<User> 用于存储合并后的数据。
  • 遍历 listOfLists,将每个子列表中的元素添加到 mergedList 中。

输出

无论使用 Stream API 还是传统循环,最终的输出都是相同的:

User{name='Alice', age=30}
User{name='Bob', age=25}
User{name='Charlie', age=35}
User{name='Diana', age=28}
User{name='Eve', age=22}
User{name='Frank', age=31}

总结

在Java编程中,合并多个列表对象可以通过Stream API或传统循环方式实现,使用Stream API进行合并时,可利用flatMap方法将嵌套的List展平,再通过collect方法收集成一个新的列表,传统循环则通过创建一个空的ArrayList,并通过遍历每个列表将元素添加进去,两种方法都能有效合并列表,并保持数据类型一致。

到此这篇关于Java多种方法实现合并多个对象列表的文章就介绍到这了,更多相关Java合并多个对象列表内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Springboot使用Spring Data JPA实现数据库操作

    Springboot使用Spring Data JPA实现数据库操作

    Spring Data JPA 是 Spring 基于 Spring Data 框架、在JPA 规范的基础上开发的一个框架,使用 Spring Data JPA 可以极大地简化JPA 的写法,本章我们将详细介绍在Springboot中使用 Spring Data JPA 来实现对数据库的操作
    2021-06-06
  • maven在IDEA下载依赖包速度慢的问题解决

    maven在IDEA下载依赖包速度慢的问题解决

    这篇文章主要介绍了maven在IDEA下载依赖包速度慢的问题解决方案,本文通过图文结合的形式给大家分享解决方案,供大家参考,需要的朋友可以参考下
    2024-01-01
  • Spring Cloud使用Feign实现Form表单提交的示例

    Spring Cloud使用Feign实现Form表单提交的示例

    本篇文章主要介绍了Spring Cloud使用Feign实现Form表单提交的示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-03-03
  • JDK1.6“新“特性Instrumentation之JavaAgent(推荐)

    JDK1.6“新“特性Instrumentation之JavaAgent(推荐)

    这篇文章主要介绍了JDK1.6“新“特性Instrumentation之JavaAgent,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-08-08
  • Maven添加Tomcat插件实现热部署代码实例

    Maven添加Tomcat插件实现热部署代码实例

    这篇文章主要介绍了Maven添加Tomcat插件实现热部署代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-04-04
  • IntelliJ IDEA安装scala插件并创建scala工程的步骤详细教程

    IntelliJ IDEA安装scala插件并创建scala工程的步骤详细教程

    这篇文章主要介绍了IntelliJ IDEA安装scala插件并创建scala工程的步骤,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-07-07
  • SpringBoot整合EasyExcel实现文件导入导出

    SpringBoot整合EasyExcel实现文件导入导出

    这篇文章主要介绍了SpringBoot整合EasyExcel实现文件导入导出的方法,帮助大家更好的理解和学习使用SpringBoot,感兴趣的朋友可以了解下
    2021-05-05
  • 解决问题:Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources

    解决问题:Failed to execute goal org.apache.m

    这篇文章主要给大家介绍了关于解决问题:Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources的相关资料,文中将解决的办法介绍的非常详细,需要的朋友可以参考下
    2023-03-03
  • Java运行时jar终端输出的中文日志乱码两种解决方式

    Java运行时jar终端输出的中文日志乱码两种解决方式

    jar包启动,今天java开发过来找,说jar包启动日志是乱码,这篇文章主要给大家介绍了关于Java运行时jar终端输出的中文日志乱码的两种解决方式,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2024-01-01
  • Java实现微信支付的项目实践

    Java实现微信支付的项目实践

    最近的一个项目中涉及到了支付业务,其中用到了微信支付和支付宝支付,本文就来介绍一下Java实现微信支付的项目实践,具有一定的参考价值,感兴趣的可以了解一下
    2023-10-10

最新评论