Collectors.groupingBy()组合键
时间: 2023-10-19 17:34:47 浏览: 139
Java8 stream 中利用 groupingBy 进行多字段分组求和案例
5星 · 资源好评率100%
Collectors.groupingBy()是Java 8中的一个流操作,用于根据指定的分类函数对元素进行分组,并返回一个Map对象,其中键是分类结果,值是属于该分类的元素列表。
组合键是指在分组操作中,可以使用多个属性来进行分组。例如,假设有一个Person对象的流,每个Person对象有姓名和年龄两个属性,我们想要按照姓名和年龄进行分组。可以使用groupingBy()方法的多参数重载形式来实现:
```java
Map<String, Map<Integer, List<Person>>> groups = persons.stream()
.collect(Collectors.groupingBy(Person::getName,
Collectors.groupingBy(Person::getAge)));
```
在上述示例中,首先根据姓名进行分组,并创建一个以姓名为键的Map。然后,对于每个姓名分组,再根据年龄进行分组,并创建以年龄为键的内层Map。
这样就可以通过组合键来对元素进行多级分组,并得到一个嵌套的Map结构。
阅读全文