可以使用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中。
标签:List,元素,合并,getId,集合,e1,id From: https://www.cnblogs.com/RedOrange/p/17880936.html