stream中的group怎么用
时间: 2024-12-23 13:25:29 浏览: 4
在Java Stream API中,`groupingBy()`方法用于根据某个键值(key-value)对将元素分组到多个集合中。这个方法通常与`Collectors`工具类一起使用,返回一个`Map`,其中键是分组依据,值是包含相应键值的子流。
以下是一个基本的使用示例:
```java
import java.util.*;
import java.util.stream.*;
class User {
String name;
int age;
// 构造器,getter和setter省略
}
List<User> users = Arrays.asList(
new User("Alice", 20),
new User("Bob", 25),
new User("Charlie", 20),
new User("David", 30)
);
// 根据年龄分组
Map<Integer, List<User>> groupedUsers = users.stream()
.collect(Collectors.groupingBy(User::getAge));
// 输出结果:
// {20=[User{name=Alice, age=20}, User{name=Charlie, age=20}],
// 25=[User{name=Bob, age=25}],
// 30=[User{name=David, age=30}]}
```
在这个例子中,我们创建了一个`User`列表,然后使用`groupingBy()`方法根据用户的年龄将他们分成不同的组。每个用户的年龄成为了`Map`的键,对应的值是一个`List`,包含了年龄相同的用户。
如果你想要进一步处理这些分组后的数据,例如计算每个年龄段的人数或执行其他操作,你可以遍历`Map`的条目。
阅读全文