java8找出两个集合List<Employee> 中 id相同的元素,再将别的属性合并,放在新的集合里面

可以使用Java 8的Stream API来实现这个需求。具体步骤如下:

1. 创建一个新的集合,用于存放合并后的元素。
2. 使用Stream的filter()方法过滤出id相同的元素。
3. 使用Stream的map()方法将id相同的元素合并成一个新的元素,其中别的属性可以通过自定义的合并规则来实现。
4. 使用Stream的collect()方法将合并后的元素收集到新的集合中。

下面是一个示例代码: 

List<Employee> list1 = new ArrayList<>();
List<Employee> list2 = new ArrayList<>();

// 假设list1和list2是两个待合并的集合

// 创建一个新的集合,用于存放合并后的元素
List<Employee> mergedList = new ArrayList<>();

// 使用Stream的filter()方法过滤出id相同的元素,并使用map()方法合并别的属性
list1.stream()
        .filter(e1 -> list2.stream().anyMatch(e2 -> e2.getId() == e1.getId()))
        .map(e1 -> {
            Employee e2 = list2.stream().filter(e -> e.getId() == e1.getId()).findFirst().get();
            // 自定义的合并规则
            String name = e1.getName() + "-" + e2.getName();
            int age = e1.getAge() + e2.getAge();
            return new Employee(e1.getId(), name, age);
        })
        .forEach(mergedList::add);

// 输出合并后的结果
mergedList.forEach(System.out::println);

 

在上述代码中,假设Employee类有三个属性:id、name和age。我们通过filter()方法找出id相同的元素,然后通过map()方法将别的属性合并成一个新的元素。最后,通过collect()方法将合并后的元素收集到新的集合mergedList中。

posted @ 2024-01-24 09:33  黄橙  阅读(1557)  评论(0)    收藏  举报