可以使用 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

Java List<User> 分组:使用 groupId 进行高效分组

原文地址: https://www.cveoy.top/t/topic/ol1Z 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录