groupingBy怎么使用
时间: 2024-02-17 10:30:55 浏览: 49
C# GroupBy的基本使用教程
groupingBy是Java 8中的一个收集器(Collector),用于将元素按照指定的分类器(Function)分组。它的使用方式如下:
1. 定义一个分类器(Function),用于指定按照哪个属性进行分组。例如,将一组Person对象按照年龄分组:
```
Function<Person, Integer> ageClassifier = person -> person.getAge();
```
2. 调用流的collect方法,将元素按照分类器进行分组。例如,将一组Person对象按照年龄分组:
```
List<Person> persons = ...
Map<Integer, List<Person>> ageMap = persons.stream().collect(Collectors.groupingBy(ageClassifier));
```
上述代码将一组Person对象按照年龄分组,生成一个Map<Integer, List<Person>>对象,其中Key为年龄,Value为同一年龄的Person对象列表。
还可以对分组后的结果进行进一步的处理,例如对每个分组进行聚合操作,可以使用下面的代码:
```
List<Person> persons = ...
Map<Integer, Double> avgAgeMap = persons.stream()
.collect(Collectors.groupingBy(ageClassifier, Collectors.averagingInt(Person::getAge)));
```
上述代码将一组Person对象按照年龄分组,然后对每个分组计算平均年龄,生成一个Map<Integer, Double>对象,其中Key为年龄,Value为同一年龄的Person对象的平均年龄。
阅读全文