Java List<User> 分组:使用 groupId 进行高效分组
可以使用 Java 8 的流式处理和 Collectors.groupingBy 方法来对 List<User> 按照 groupId 进行分组:
import java.util.*;
import java.util.stream.Collectors;
public class GroupByGroupId {
public static void main(String[] args) {
List<User> userList = new ArrayList<>();
userList.add(new User('1', 'Alice'));
userList.add(new User('2', 'Bob'));
userList.add(new User('1', 'Charlie'));
userList.add(new User('2', 'David'));
userList.add(new User('3', 'Eva'));
Map<String, List<User>> groupByGroupId = userList.stream()
.collect(Collectors.groupingBy(User::getGroupId));
System.out.println(groupByGroupId);
}
}
class User {
private String groupId;
private String name;
public User(String groupId, String name) {
this.groupId = groupId;
this.name = name;
}
public String getGroupId() {
return groupId;
}
public String getName() {
return name;
}
@Override
public String toString() {
return "User{" +
"groupId='" + groupId + "'"
+ ", name='" + name + "'"
+ '}';
}
}
输出结果为:
{
1=[User{groupId='1', name='Alice'}, User{groupId='1', name='Charlie'}],
2=[User{groupId='2', name='Bob'}, User{groupId='2', name='David'}],
3=[User{groupId='3', name='Eva'}]
}
其中,groupByGroupId 是一个 Map<String, List<User>> 类型的对象,它的键是 groupId,值是该 groupId 对应的所有 User 对象组成的 List。
原文地址: https://www.cveoy.top/t/topic/ol1Z 著作权归作者所有。请勿转载和采集!