gpt4 book ai didi

java - 多个字段上的对象列表分组 Java 8

转载 作者:行者123 更新时间:2023-12-01 19:27:20 25 4
gpt4 key购买 nike

我将有一个 Employee 列表,其中包含 3 个属性 - DepartmentId、employeeId、employeeGroup。

我想对部门 ID 和员工 ID 执行分组。这个想法是发送所属部门的员工的组名。以下是 3 种可能的情况:

案例#1:同一部门、不同员工、不同组。

["Dept001", 100, "Admin"]
["Dept001", 101, "Contrator"]

案例#2:同一部门、同一员工、不同组

["Dept001", 100, "Admin"]
["Dept001", 100, "Contrator"]

案例#3:不同的部门、不同的员工、同一组。

["Dept001", 100, "Admin"]
["Dept002", 101, "Admin"]

我尝试过以下方法:

Map<String, Set<Employee>> map = new TreeMap<>();

map = myList.stream().collect(Collectors.groupingBy(Employee::getDepartmentId,
Collectors.toSet()));

最佳答案

按多个字段分组将需要多次调用 Collectors#groupingBy 。幸运的是,重载的第二个参数Collectors#groupingBy方法是另一种Collector ,因此只需调用两次即可。

Map<String, Map<Integer, Set<Employee>>> map = myList.stream()
.collect(Collectors.groupingBy(Employee::getDepartmentId,
Collectors.groupingBy(Employee::getEmployeeId, Collectors.toSet())));

请注意,Map 的值是另一个Map;第一个以员工的部门 ID 为 key ,第二个以员工的员工 ID 为 key 。

关于java - 多个字段上的对象列表分组 Java 8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61108086/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com