java stream分组求和案例
时间: 2023-08-01 15:06:25 浏览: 139
Java8 stream 中利用 groupingBy 进行多字段分组求和案例
5星 · 资源好评率100%
下面是一个使用Java Stream进行分组求和的例子:
```java
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
public class GroupingAndSummingExample {
public static void main(String[] args) {
// 创建一个包含多个学生的列表
List<Student> students = Arrays.asList(
new Student("Alice", "Math", 85),
new Student("Bob", "English", 75),
new Student("Alice", "English", 90),
new Student("Bob", "Math", 80),
new Student("Charlie", "Math", 95)
);
// 使用Stream进行分组求和
Map<String, Integer> sumByStudent = students.stream()
.collect(Collectors.groupingBy(Student::getName, Collectors.summingInt(Student::getScore)));
// 打印每个学生的总分
sumByStudent.forEach((name, totalScore) -> System.out.println(name + ": " + totalScore));
}
static class Student {
private String name;
private String subject;
private int score;
public Student(String name, String subject, int score) {
this.name = name;
this.subject = subject;
this.score = score;
}
public String getName() {
return name;
}
public String getSubject() {
return subject;
}
public int getScore() {
return score;
}
}
}
```
上述例子中,我们创建了一个包含多个学生的列表。然后使用Stream的`groupingBy`方法对学生进行分组,按照学生名字进行分组,并通过`summingInt`方法对每个分组中的学生成绩进行求和。最后,我们遍历结果Map,打印每个学生的总分。
运行上述代码,将会输出:
```
Alice: 175
Bob: 155
Charlie: 95
```
可以看到,学生Alice的总分是175,学生Bob的总分是155,学生Charlie的总分是95。
阅读全文