java - 使用 Streams 获取每个子部门和部门的员工,

标签 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]}

有人可以帮我吗?

最佳答案

您可以使用groupBy

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

关于java - 使用 Streams 获取每个子部门和部门的员工,,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61156305/

相关文章:

java - 在 Java 中根据逗号分隔的字符串按字段创建枚举列表

Java日期不解析日期

java stream - 带有方法引用的平面图

java - 如何让 `reduce` 将流中的值彼此相除?

java - 从大文件中一一读取3000万用户id

java - 在特定方法中禁用 spring 安全认证

java - 任何 Java IDE 中的文件 "rollback"

lambda - 为什么在不安全操作之后而不是在整个 forEach 循环之后抛出 ConcurrentModificationException ?

Java 8 lambdas 多个过滤器调用

java - 如何用java android jdk播放外部视频?