java 分组字段求和
时间: 2023-10-17 16:24:18 浏览: 85
JAVA8 stream中三个参数的reduce方法对List进行分组统计操作
5星 · 资源好评率100%
可以使用 Java 中的 Stream API 对数据进行分组和求和操作。例如,假设有一个包含学生信息的列表,每个学生有姓名、年龄和成绩三个属性,我们想要按照年龄分组,并计算每个年龄段的平均成绩,可以使用如下代码:
```java
import java.util.*;
import java.util.stream.*;
public class Main {
public static void main(String[] args) {
List<Student> students = Arrays.asList(
new Student("Alice", 18, 80),
new Student("Bob", 18, 90),
new Student("Charlie", 19, 85),
new Student("David", 19, 95),
new Student("Eva", 20, 85)
);
Map<Integer, Double> avgScoresByAge = students.stream()
.collect(Collectors.groupingBy(Student::getAge,
Collectors.averagingDouble(Student::getScore)));
System.out.println(avgScoresByAge);
}
}
class Student {
private String name;
private int age;
private int score;
public Student(String name, int age, int score) {
this.name = name;
this.age = age;
this.score = score;
}
public String getName() { return name; }
public int getAge() { return age; }
public int getScore() { return score; }
}
```
在这个例子中,我们使用 `Collectors.groupingBy` 方法按照年龄进行分组,然后使用 `Collectors.averagingDouble` 方法计算每个年龄段的平均成绩。最终得到的结果是一个 `Map<Integer, Double>`,其中键是年龄,值是该年龄段的平均成绩。
阅读全文