Collectors.groupingBy嵌套使用
时间: 2024-10-22 07:00:21 浏览: 25
深入探索Java 8的`Collectors.groupingBy()`:分组的艺术
`Collectors.groupingBy` 是 Java Stream API 中用于对集合数据进行分组的一个重要工具,它允许你按照某个键将元素划分到不同的组里。如果需要进行嵌套的分组,通常是在处理有多个层次的数据结构,比如一个对象包含多个属性,而你希望根据每个属性分别进行分组。
例如,假设你有一个 `Person` 对象列表,每个人都有名字和年龄,你可以这样做:
```java
List<Person> people = ... // 假设 Person 类包含 name 和 age 属性
Map<String, Map<Integer, List<Person>>> groupedPeople = people.stream()
.collect(Collectors.groupingBy(Person::getName, // 按照名字分组
Collectors.groupingBy(Person::getAge)); // 然后再按照年龄分组
// groupedPeople 现在是一个多层次的映射:
// key1 (名字) -> {key2 (年龄): [list of People with that name and age]}
```
在这个例子中,`groupingBy(Person::getName)` 首先创建了一个按名字分组的结果,然后内部的 `Collectors.groupingBy(Person::getAge)` 又根据每个人的年龄进一步细分了每个名字下的组。
阅读全文