collectors.groupingby多字段分组
时间: 2024-09-13 17:03:50 浏览: 40
Java8 stream 中利用 groupingBy 进行多字段分组求和案例
5星 · 资源好评率100%
`Collectors.groupingBy` 是 Java Stream API 中的一个重要工具,它用于对集合数据进行基于指定键的分组。这个方法允许你在一组对象上应用一个函数,然后根据该函数的结果值将它们分到不同的组里。它的基本语法通常是这样的:
```java
Map<Function<T, K>, List<T>> grouped = list.stream()
.collect(Collectors.groupingBy(keyExtractor));
```
这里,`T` 表示输入流中的元素类型,`K` 是映射键的类型,`keyExtractor` 是一个函数,用于从每个元素提取分组的依据(键)。这会返回一个 `Map<K, List<T>>` 结果,其中键是分组的依据,对应的值是一个包含属于该组的所有元素的列表。
例如,如果你有一个学生列表,你可以按照年级和班级对学生进行分组:
```java
List<Student> students = ...;
Map<String, Map<Integer, List<Student>>> groupedStudents = students.stream()
.collect(Collectors.groupingBy(Student::getGrade,
Collectors.groupingBy(Student::getClassroom)));
```
阅读全文