wuqingvika 发表于 2023-2-10 10:35

大佬们Lambda获取部门及其对应的员工信息有更优的写法吗

本帖最后由 wuqingvika 于 2023-2-10 14:52 编辑



实现 遍历部门及对应的员工信息
Map<Integer, List<WqEmployee>> collect = wqemps.stream()
                              .collect(Collectors.groupingBy(WqEmployee::getDeptId));
                for (int i = 0; i < wqdepts.size(); i++) {
                        wqdepts.get(i).setEmps(collect.get(wqdepts.get(i).getId()));
                }

求助大佬 这块能实现 但是总感觉没用全。。有没有更好的写法呀


【已解决】
chatgpt 给的回答

整理得:
//将部门员工对应关系表 按部门Id分组
      Map<Integer, List<WqEmployee>> collect = wqemps.stream()
                .collect(Collectors.groupingBy(WqEmployee::getDeptId));
                //遍历部门 给每个部门塞入它下面的员工列表
      List<WqDept> departmentWithEmployees = wqdepts.stream()
                .map(department -> new WqDept(department.getId(), department.getName(),
                        collect.getOrDefault(department.getId(),
                              Collections.emptyList())))
                .collect(Collectors.toList());

wuqingvika 发表于 2023-2-10 10:37

Map<Integer, List<WqEmployee>> collect = wqemps.stream()
                                .collect(Collectors.groupingBy(WqEmployee::getDeptId));
                wqdepts.stream().forEach(wqDept -> {
                        wqDept.setEmps(collect.get(wqDept.getId()));
                }); 这样啰嗦吗

Broadm 发表于 2023-2-10 11:31

      wqDepts.forEach(d -> {
            List<WqEmployee> emps = wqemps.stream().filter(f -> {
                return f.getDeptId() == d.getId();
            }).collect(Collectors.toList());
            ;
            d.setEmps(emps);
      });

244888888 发表于 2023-2-10 14:36

wuqingvika 发表于 2023-2-10 14:50

244888888 发表于 2023-2-10 14:36
你可以咨询下ChatTGP

哈哈还真别说 我刚打开准备编辑 根据chatgpt给的整理的 代码呢//将部门员工对应关系表 按部门Id分组
      Map<Integer, List<WqEmployee>> collect = wqemps.stream()
                .collect(Collectors.groupingBy(WqEmployee::getDeptId));
                //遍历部门 给每个部门塞入它下面的员工列表
      List<WqDept> departmentWithEmployees = wqdepts.stream()
                .map(department -> new WqDept(department.getId(), department.getName(),
                        collect.getOrDefault(department.getId(),
                              Collections.emptyList())))
                .collect(Collectors.toList());

wuqingvika 发表于 2023-2-10 14:52

Broadm 发表于 2023-2-10 11:31
      wqDepts.forEach(d -> {
            List emps = wqemps.stream().filte ...

谢谢大佬~~:handshake
页: [1]
查看完整版本: 大佬们Lambda获取部门及其对应的员工信息有更优的写法吗