java stream 分组
时间: 2023-09-25 19:16:17 浏览: 36
在 Java 中,可以使用 Stream API 对数据进行分组。
首先,需要准备好要分组的数据。例如,可以使用 List 来存储这些数据:
```
List<Person> people = Arrays.asList(
new Person("Alice", 20),
new Person("Bob", 30),
new Person("Charlie", 40),
new Person("Dave", 50)
);
```
然后,可以使用 Stream API 的 `Collectors.groupingBy` 方法来对数据进行分组:
```
Map<Integer, List<Person>> groups = people.stream()
.collect(Collectors.groupingBy(Person::getAge));
```
这样,就可以得到一个按年龄分组的 Map,其中键是年龄,值是年龄相同的人的列表。
例如,对于上面的数据,就可以得到如下的分组结果:
```
{
20: [Alice],
30: [Bob],
40: [Charlie],
50: [Dave]
}
```
当然,也可以使用其他的分组函数,比如根据人的名字的首字母来分组:
```
Map<Character, List<Person>> groups = people.stream()
.collect(Collectors.groupingBy(p -> p.getName().charAt(0)));
```
这样,就可以得到如下的分组结果:
```
{
'A': [Alice],
'B': [Bob],
'C': [Charlie],
'D': [Dave]
}
```
可以看到,使用 Stream API 进行分组是非常方便的。