java8 如何对list操作 根据某一个字段进行判断去重对另一个字段进行累加 最终返回list?
总结
在 Java 8 中,可以使用 Stream API 对 List
进行操作,按照指定字段去重并对另一个字段进行累加。假设我们有一个 Person
类,其包含 id
和 value
字段。以下是处理流程:
- 创建数据类:定义包含需要处理字段的类,例如
Person
。 - 去重与累加:
- 使用
Stream
的collect
方法和Collectors.toMap
来根据某字段(如id
)进行去重,并对另一个字段(如value
)进行累加。 Collectors.toMap
方法的合并函数用来处理字段值的累加。
- 使用
- 转换回
List
:将结果转换回List
。
示例代码:
javaimport java.util.*;
import java.util.stream.Collectors;
class Person {
private int id;
private int value;
// Constructor, getters, and setters
public Person(int id, int value) {
this.id = id;
this.value = value;
}
public int getId() {
return id;
}
public int getValue() {
return value;
}
@Override
public String toString() {
return "Person{id=" + id + ", value=" + value + '}';
}
}
public class Main {
public static void main(String[] args) {
List<Person> people = Arrays.asList(
new Person(1, 10),
new Person(2, 20),
new Person(1, 15),
new Person(2, 5)
);
List<Person> result = people.stream()
.collect(Collectors.toMap(
Person::getId,
Person::getValue,
Integer::sum
))
.entrySet()
.stream()
.map(e -> new Person(e.getKey(), e.getValue()))
.collect(Collectors.toList());
result.forEach(System.out::println);
}
}
关键字
Java 8, Stream API, List, 去重, 累加, Collectors.toMap
, Collectors.toList
, 字段操作