使用Streams为每个子部门和部门获取员工,

问题描述 投票:0回答:1

我有员工名单。我需要获取每个部门和子部门的员工ID列表,

class Employee{
    int id;
    String name;
    String department;
    String subDepartment;
}

我检查了许多教程,并尝试过但没有运气。

employeeList.stream()
        .collect(Collectors.toMap(empl->empl.getDepartment(), // get sub-departmets and empId list for each sub-departmets));

我需要类似的结果,

{Dept1={subDept1=[1, 2], subDept2=[3, 4, 5]}

有人可以帮我吗。

java java-8 stream java-stream
1个回答
1
投票

您可以使用groupBy

employeeList.stream()
            .collect(Collectors.groupingBy(Employee::getDepartment,
                 Collectors.groupingBy(Employee::getSubDepartment,
                         Collectors.mapping(Employee::getId, toList()))));
© www.soinside.com 2019 - 2024. All rights reserved.