通过Streams吸引每个子部门和部门的员工,

时间:2020-04-11 11:49:28

标签: java java-8 java-stream

我有员工名单。我需要获取每个部门和子部门的员工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]}

有人可以帮我吗?

1 个答案:

答案 0 :(得分:3)

您可以使用groupBy

employeeList.stream()
            .collect(Collectors.groupingBy(Employee::getDepartment,
                 Collectors.groupingBy(Employee::getSubDepartment,
                         Collectors.mapping(Employee::getId, toList()))));