Java List根据string字段去重,相同的对象对int字段累加
时间: 2024-02-27 18:59:07 浏览: 177
可以通过使用Java 8提供的Stream API和Lambda表达式来根据指定的字符串字段对List进行去重操作,并对相同的对象进行整数字段的累加。具体实现步骤如下:
1. 定义一个实体类,包含需要去重和累加的字段,例如:
```
public class Person {
private String name;
private int age;
// 其他字段...
// 构造函数、getter和setter方法...
}
```
2. 初始化一个包含多个Person对象的List,例如:
```
List<Person> personList = new ArrayList<>();
personList.add(new Person("Tom", 20));
personList.add(new Person("Jerry", 18));
personList.add(new Person("Tom", 25));
personList.add(new Person("Jack", 22));
```
3. 使用Stream API进行去重和累加操作,例如:
```
Map<String, Person> resultMap = personList.stream().collect(
Collectors.toMap(
Person::getName, // 指定map的key
Function.identity(), // 指定map的value
(oldValue, newValue) -> { // 指定合并函数,用于累加相同名称的Person对象的age字段
oldValue.setAge(oldValue.getAge() + newValue.getAge());
return oldValue;
}
)
);
List<Person> resultList = new ArrayList<>(resultMap.values()); // 将map转换为List
```
以上代码将根据Person对象的name字段进行去重,并将相同名称的Person对象的age字段进行累加。最终,得到一个新的List对象,其中包含去重后的Person对象(相同名称的Person对象的age字段已经累加)。需要注意的是,此方法得到的Person对象的顺序可能与原始List的顺序不同。
阅读全文