Collectors.groupingBy介绍一下
时间: 2023-10-13 20:26:54 浏览: 26
`Collectors.groupingBy`是Java 8中的一个静态方法,它是一个收集器,用于对数据进行分组。它接受一个函数作为分组依据,并返回一个`Map`对象,其中键是分组依据的结果,值是分组的元素列表。
`groupingBy`方法有两个重载形式,一种接收一个分类函数作为参数,另一种接收分类函数和一个收集器作为参数。第二种形式可以用于将分组结果进一步处理。
以下是一个使用`groupingBy`方法的示例,假设有一个Person类,它有一个getAge方法返回年龄,我们可以按照年龄对Person列表进行分组:
```java
List<Person> people = Arrays.asList(
new Person("Alice", 25),
new Person("Bob", 30),
new Person("Charlie", 25)
);
Map<Integer, List<Person>> peopleByAge = people.stream()
.collect(Collectors.groupingBy(Person::getAge));
System.out.println(peopleByAge);
// 输出:{25=[Person{name='Alice', age=25}, Person{name='Charlie', age=25}], 30=[Person{name='Bob', age=30}]}
```
在这个示例中,`Person::getAge`方法作为分类函数,将`people`列表中的元素按照年龄进行分组,结果是一个`Map`对象,其中键是年龄,值是对应年龄的Person列表。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)