Java stream 分组
时间: 2024-08-17 17:00:33 浏览: 53
Java Stream 流实现合并操作示例
5星 · 资源好评率100%
Java Stream API 提供了一个强大的功能,即分组(Grouping)。分组允许你在集合上按照某个键(Key)对元素进行分类,然后对每个分组应用聚合操作。`Stream` 的 `collect()` 方法配合 `Collectors.groupingBy()` 或 `Collectors.partitioningBy()` 等函数可以用于这个目的。
例如,如果你有一个学生列表,你可以按年龄将他们分组:
```java
List<Student> students = ...;
Map<Integer, List<Student>> ageGroups = students.stream()
.collect(Collectors.groupingBy(Student::getAge));
```
这里,`ageGroups` 就是一个 Map,键是学生的年龄,值是对应年龄的学生列表。
对于 `partitioningBy()`,它可以返回两个独立的流,一个包含满足给定断言的元素,另一个包含不满足的元素:
```java
Map<Boolean, List<Student>> hasPassedTest = students.stream()
.collect(Collectors.partitioningBy(student -> student.hasPassedTest()));
```
这会给你一个布尔值对应的流,真表示通过测试的学生,假表示未通过测试的学生。
阅读全文