大佬们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()); Map<Integer, List<WqEmployee>> collect = wqemps.stream()
.collect(Collectors.groupingBy(WqEmployee::getDeptId));
wqdepts.stream().forEach(wqDept -> {
wqDept.setEmps(collect.get(wqDept.getId()));
}); 这样啰嗦吗 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
你可以咨询下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()); Broadm 发表于 2023-2-10 11:31
wqDepts.forEach(d -> {
List emps = wqemps.stream().filte ...
谢谢大佬~~:handshake
页:
[1]