吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 822|回复: 5
收起左侧

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

[复制链接]
wuqingvika 发表于 2023-2-10 10:35
本帖最后由 wuqingvika 于 2023-2-10 14:52 编辑

ed5c7c5691c9639a858ee41d95b6405.png

实现 遍历部门及对应的员工信息
[Java] 纯文本查看 复制代码
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 给的回答
c490ef528e486f14673ea5389d9bd4a.jpg
整理得:
[Asm] 纯文本查看 复制代码
//将部门员工对应关系表 按部门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
[Java] 纯文本查看 复制代码
        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
[mw_shl_code=java,true]        wqDepts.forEach(d -> {
            List emps = wqemps.stream().filte ...

谢谢大佬~~
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2025-1-11 18:04

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表