collectors.groupingby统计
时间: 2023-12-17 16:02:38 浏览: 73
`Collectors.groupingBy` 是一个 Java 8 中的流操作,用于将流中的元素按照指定的条件进行分组统计。它接收一个分类函数作为参数,根据该函数的返回值将元素分组。下面是一个示例:
假设有一个包含学生对象的列表,我们需要根据学生的年级进行分组统计每个年级的学生人数:
```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) {
List<Student> students = Arrays.asList(
new Student("Alice", 10),
new Student("Bob", 11),
new Student("Charlie", 10),
new Student("David", 11),
new Student("Eve", 10)
);
Map<Integer, Long> studentCountByGrade = students.stream()
.collect(Collectors.groupingBy(Student::getGrade, Collectors.counting()));
System.out.println(studentCountByGrade);
}
}
class Student {
private String name;
private int grade;
public Student(String name, int grade) {
this.name = name;
this.grade = grade;
}
public int getGrade() {
return grade;
}
}
```
输出结果为:
```
{10=3, 11=2}
```
在上述代码中,我们通过 `Collectors.groupingBy` 将学生按照年级进行分组,然后使用 `Collectors.counting()` 统计每个分组中的学生数量。最终得到一个 `Map` 对象,键为年级,值为学生数量。
阅读全文