List.stream分组求和
时间: 2024-06-14 13:08:44 浏览: 109
List.stream分组求和是一种常见的数据处理操作,它可以将一个List中的元素照某个属性进行分组,并对每个分组中的元素进行求和操作。下面是一个示例代码:
```java
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
// 创建一个包含多个Person对象的List
List<Person> personList = Arrays.asList(
new Person("Alice", "A", 100),
new Person("Bob", "A", 200),
new Person("Charlie", "B", 300),
new Person("David", "B", 400),
new Person("Eve", "C", 500)
);
// 使用stream进行分组求和
Map<String, Integer> sumByGroup = personList.stream()
.collect(Collectors.groupingBy(Person::getGroup, Collectors.summingInt(Person::getScore)));
// 输出结果
sumByGroup.forEach((group, sum) -> System.out.println(group + ": " + sum));
}
}
class Person {
private String name;
private String group;
private int score;
public Person(String name, String group, int score) {
this.name = name;
this.group = group;
this.score = score;
}
public String getName() {
return name;
}
public String getGroup() {
return group;
}
public int getScore() {
return score;
}
}
```
上述代码中,我们创建了一个包含多个Person对象的List,并使用stream对其进行操作。通过`Collectors.groupingBy`方法,我们可以按照Person对象的group属性进行分组,然后使用`Collectors.summingInt`方法对每个分组中的score属性进行求和。最后,我们将结果存储在一个Map中,并输出每个分组的求和结果。
阅读全文