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合并多个对象列表内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java实现图片合成的示例详解

    Java实现图片合成的示例详解

    前端有一个神器——canvas,这个画布标签可以处理各种图片的合成,可以精确到图片的具体坐标。java后端也有这样的神器,那就是image-combiner,可以很简单的合成图片,感兴趣的可以试一试
    2022-01-01
  • SpringBoot应用的接口访问从HTTP改为HTTPS

    SpringBoot应用的接口访问从HTTP改为HTTPS

    本文主要介绍了SpringBoot应用的接口访问从HTTP改为HTTPS,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-03-03
  • Java ApiPost请求返回406状态码问题的解决方案

    Java ApiPost请求返回406状态码问题的解决方案

    APIPost是一款专为开发者和测试人员设计的API测试工具,类似于Postman,但提供了更多的团队协作和文档管理功能,它可以帮助你更好地进行接口调试和集成测试,但遇到了请求后返回的是406状态,所以本文给大家介绍了Java ApiPost请求返回406状态码问题的解决方案
    2025-04-04
  • IntelliJ IDEA下Maven创建Scala项目的方法步骤

    IntelliJ IDEA下Maven创建Scala项目的方法步骤

    这篇文章主要介绍了IntelliJ IDEA下Maven创建Scala项目的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-06-06
  • springboot集成fastDfs过程代码实例

    springboot集成fastDfs过程代码实例

    这篇文章主要介绍了springboot集成fastDfs过程代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-12-12
  • Java多线程(单例模式,堵塞队列,定时器)详解

    Java多线程(单例模式,堵塞队列,定时器)详解

    这篇文章主要介绍了java多线程的(单例模式,堵塞队列,定时器),具有一定参考价值,加深多线程编程的理解还是很有帮助的,需要的朋友可以参考下
    2021-08-08
  • Spring Cloud Alibaba Nacos Config配置中心实现

    Spring Cloud Alibaba Nacos Config配置中心实现

    这篇文章主要介绍了Spring Cloud Alibaba Nacos Config配置中心实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-04-04
  • SpringBoot应用监控Actuator使用隐患及解决方案

    SpringBoot应用监控Actuator使用隐患及解决方案

    SpringBoot的Actuator 模块提供了生产级别的功能,比如健康检查,审计,指标收集,HTTP 跟踪等,帮助我们监控和管理Spring Boot 应用,本文将给大家介绍SpringBoot应用监控Actuator使用隐患及解决方案,需要的朋友可以参考下
    2024-07-07
  • 关于IDEA使用jsp可以访问页面转换为html弹出页面为404的问题

    关于IDEA使用jsp可以访问页面转换为html弹出页面为404的问题

    这篇文章主要介绍了关于IDEA使用jsp可以访问页面转换为html弹出页面为404的问题及解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-12-12
  • java8 计算时间差的方法示例

    java8 计算时间差的方法示例

    这篇文章主要介绍了java8 计算时间差的方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-10-10

最新评论