java8 如何对list操作 根据某一个字段进行判断去重对另一个字段进行累加 最终返回list?

总结

在 Java 8 中,可以使用 Stream API 对 List 进行操作,按照指定字段去重并对另一个字段进行累加。假设我们有一个 Person 类,其包含 idvalue 字段。以下是处理流程:

  1. 创建数据类:定义包含需要处理字段的类,例如 Person
  2. 去重与累加
    • 使用 Streamcollect 方法和 Collectors.toMap 来根据某字段(如 id)进行去重,并对另一个字段(如 value)进行累加。
    • Collectors.toMap 方法的合并函数用来处理字段值的累加。
  3. 转换回 List:将结果转换回 List

示例代码:

java
import 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, 字段操作