Collectors.groupingBy(
时间: 2023-10-12 07:06:56 浏览: 61
深入探索Java 8的`Collectors.groupingBy()`:分组的艺术
我明白了,您想询问关于Java 8中的Collectors.groupingBy方法。这是一个用于对元素进行分组的方法,它接受一个分类函数作为参数,并返回一个Map对象,其中键是分类函数的结果,值是对应的元素列表。
例如,假设我们有一个包含Person对象的列表,我们希望按照年龄进行分组:
```
List<Person> people = ... // 假设已经初始化了一个列表
Map<Integer, List<Person>> peopleByAge = people.stream()
.collect(Collectors.groupingBy(Person::getAge));
```
在这个例子中,Person类有一个getAge方法,返回一个整数表示该人的年龄。通过调用Collectors.groupingBy方法,我们将人们按照年龄进行了分组,并将结果存储在一个Map对象中,其中键是年龄,值是具有相同年龄的人的列表。
除了基本的分类函数之外,Collectors.groupingBy方法还可以接受一个第二个参数,用于指定返回的Map类型,默认情况下返回的是HashMap。例如,如果我们希望返回一个TreeMap对象:
```
Map<Integer, List<Person>> peopleByAge = people.stream()
.collect(Collectors.groupingBy(Person::getAge, TreeMap::new, Collectors.toList()));
```
在这个例子中,我们使用TreeMap作为返回的Map对象,并使用Collectors.toList作为第三个参数来指定值的类型为List。这将产生一个按照年龄排序的人员列表。
希望这个解释对您有所帮助!如果您还有其他问题,请随时提问。
阅读全文