stream 分组求和 示例
时间: 2023-09-06 13:06:51 浏览: 96
下面是一个示例代码,展示了如何使用Java 8的Stream API对List进行分组求和的操作:
```java
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
public class StreamGroupingSumExample {
public static void main(String[] args) {
// 创建一个包含多个Person对象的List
List<Person> personList = Arrays.asList(
new Person("Alice", "Sales", 5000),
new Person("Bob", "IT", 6000),
new Person("Charlie", "Sales", 4500),
new Person("David", "IT", 5500),
new Person("Eve", "HR", 4000)
);
// 按照部门分组,并对每个部门的工资进行求和
Map<String, Integer> sumByDepartment = personList.stream()
.collect(Collectors.groupingBy(Person::getDepartment,
Collectors.summingInt(Person::getSalary)));
// 输出每个部门的工资总和
sumByDepartment.forEach((department, sum) ->
System.out.println(department + ": " + sum));
}
}
class Person {
private String name;
private String department;
private int salary;
public Person(String name, String department, int salary) {
this.name = name;
this.department = department;
this.salary = salary;
}
public String getName() {
return name;
}
public String getDepartment() {
return department;
}
public int getSalary() {
return salary;
}
}
```
在这个示例中,我们创建了一个包含多个Person对象的List。然后,我们使用Stream API的groupBy函数将Person对象按照部门进行分组,使用mapToInt函数对每个部门的工资进行求和。最后,我们通过forEach方法输出每个部门的工资总和。
输出结果将会是:
```
Sales: 9500
IT: 11500
HR: 4000
```
这就是使用Java 8的Stream API对List进行分组求和的示例。
阅读全文