如何在Collectors.groupingBy方法中使用多个分类器?
时间: 2024-01-28 10:13:50 浏览: 73
深入探索Java 8的`Collectors.groupingBy()`:分组的艺术
在Collectors.groupingBy方法中使用多个分类器,可以通过使用Collectors.groupingBy方法的重载版本来实现。该重载版本接受两个参数,第一个参数是分类器函数,用于指定按照哪个属性进行分组,第二个参数是一个Collector,用于指定对每个分组进行的操作。
下面是一个示例代码,演示了如何在Collectors.groupingBy方法中使用多个分类器:
```java
Map<String, Map<String, Long>> prodMap = prodList.stream()
.collect(Collectors.groupingBy(Product::getCategory, Collectors.groupingBy(Product::getType, Collectors.counting())));
```
上述代码中,我们使用了两个分类器函数,分别是Product::getCategory和Product::getType。这样就会先按照Category进行分组,然后在每个Category分组内再按照Type进行分组。最终的结果是一个嵌套的Map,其中外层Map的键是Category,内层Map的键是Type,值是对应的计数。
请注意,使用多个分类器时,需要将Collectors.groupingBy方法嵌套使用,每个嵌套的Collectors.groupingBy方法都对应一个分类器函数。
阅读全文