java 8 list,相同对象去重相加生成新的list
时间: 2023-07-18 16:32:46 浏览: 101
如果您有一个对象列表,并且想要按照某个属性进行去重并求和,可以使用Stream API 和 Collectors 工具类来完成。假设您的对象为Person,有一个属性为age,下面是一个Java 8代码示例:
```java
List<Person> personList = Arrays.asList(new Person("Tom", 20),
new Person("Mary", 18),
new Person("John", 20));
List<Person> uniquePersonList = personList.stream()
.collect(Collectors.toMap(Person::getAge,
Function.identity(),
(p1, p2) -> p1))
.values()
.stream()
.collect(Collectors.toList());
System.out.println(uniquePersonList);
```
输出结果为:[Person{name='Tom', age=20}, Person{name='Mary', age=18}]
在这个示例中,我们使用了Collectors.toMap()方法来按照年龄进行去重,然后通过取values()方法获取去重后的Person对象列表。需要注意的是,如果存在重复的键(也就是年龄),我们使用(p1, p2) -> p1的lambda表达式来选择第一个对象,这样可以保证不会出现重复的对象。
阅读全文