首页 > 编程语言 >Java怎么把多个对象的list的数据合并

Java怎么把多个对象的list的数据合并

时间:2024-09-20 17:24:33浏览次数:15  
标签:Java name List age list 合并 User new public

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

示例代码

假设我们有一个 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);
    }
}

解释

  1. 定义 User
  • User 类包含 nameage 属性,并提供相应的 getter 和 setter 方法。
  • 重写了 toString 方法以便于输出。
  1. 创建多个 List
  • 创建了三个 List<User> 对象,每个列表包含几个 User 对象。
  1. 使用 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>
  1. 使用传统循环合并列表
  • 创建一个空的 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,name,List,age,list,合并,User,new,public
From: https://blog.51cto.com/u_16390833/12066929

相关文章

  • JavaScript For 循环示例
     零食故事:假设您有一篮子零食:constsnacks=['apple','banana','chocolate'];现在,您想与您的朋友分享这些零食。但你不是把整个篮子都给他们,而是把每件零食都拿出来,一一递给他们:console.log(...snacks);//output:applebananachocolate...(摊开)操作符就像是把......
  • unity调用java静态方法
    在uni-app中使用NFC功能,可以通过调用微信小程序的NFCAPI(目前只在微信小程序中有效)。uni-app是多平台框架,而NFC功能的具体实现依赖于微信小程序的NFCAPI。以下是如何在uni-app中使用NFC功能,包括发现NFC设备、连接以及写入数据的详细步骤。​前置条件确保已经......
  • 【后端开发】JavaEE初阶——计算机是如何工作的???
    前言:......
  • java计算机毕业设计面向爱宠人群的宠物资讯系统(开题+程序+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景在当今社会,随着生活水平的提高和情感需求的多元化,宠物已成为众多家庭不可或缺的重要成员。爱宠人群对宠物健康的关注、生活品质的追求以及个性化需求......
  • java计算机毕业设计课程教学评估数据分析 (开题+程序+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景在高等教育日益重视教学质量与学生学习成效的当下,课程教学评估作为衡量教育效果、促进教学改进的重要手段,其重要性日益凸显。随着信息技术的飞速发展......
  • java计算机毕业设计考研加油站(开题+程序+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景:随着教育竞争的日益激烈,考研已成为众多本科毕业生及在职人员进一步提升学术水平和职业竞争力的重要途径。然而,考研过程中信息繁杂、资料众多,考生往往......