stream流分组求和
时间: 2023-07-08 16:49:48 浏览: 144
JAVA8 stream中三个参数的reduce方法对List进行分组统计操作
5星 · 资源好评率100%
可以使用Java 8的流(Stream)来实现流分组求和。以下是一个示例代码:
假设有一个Person类,包含姓名(name)、年龄(age)和城市(city)三个属性。
```java
import java.util.*;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
List<Person> persons = Arrays.asList(
new Person("Alice", 20, "New York"),
new Person("Bob", 30, "New York"),
new Person("Charlie", 25, "London"),
new Person("David", 35, "London")
);
// 按城市分组,并计算每个城市的年龄总和
Map<String, Integer> cityAgeSumMap = persons.stream()
.collect(Collectors.groupingBy(Person::getCity,
Collectors.summingInt(Person::getAge)));
System.out.println(cityAgeSumMap);
// 输出:{London=60, New York=50}
}
}
class Person {
private String name;
private int age;
private String city;
public Person(String name, int age, String city) {
this.name = name;
this.age = age;
this.city = city;
}
// getter和setter方法省略
public String toString() {
return name + " (" + age + ") - " + city;
}
}
```
在上面的代码中,我们使用`Collectors.groupingBy()`方法将Person对象按城市分组,然后使用`Collectors.summingInt()`方法计算每个城市的年龄总和。最终得到一个Map,其中键为城市名,值为该城市的年龄总和。
如果您有任何疑问,请随时问我。
阅读全文