Java后台返回树形结构的二种方式

简介: Java后台返回树形结构的二种方式

4 篇文章0 订阅

订阅专栏

方式一、使用递归方式实现

1. private List<SysDept> getSysDepts(String deptId) {
2. // 1、获取表中所有数据 (自行根据实际场景拿到所有表数据)
3.         List<SysDept> all = getAllDept();
4. // 3、返回的结果集
5.         List<SysDept> tree = new ArrayList<>();
6. // 4、获取到最外层的部门信息
7.         List<SysDept> parentSysDept = all.stream().filter(dept -> dept.getDeptId().equals(deptId)).collect(Collectors.toList());
8. if (CollectionUtils.isNotEmpty(parentSysDept)){
9. // 5、取出部门信息
10. SysDept dept = parentSysDept.get(0);
11. // 6、放入集合中
12.             tree.add(dept);
13. // 7、添加子节点
14.             addChildDept(dept, all);
15.         }
16. return tree;
17.     }
18. private void addChildDept(SysDept sysDept, List<SysDept> all) {
19. // 1、拿到所传部门的字部门列表
20.         List<SysDept> tempList = all.stream()
21.                 .filter(dept -> sysDept.getDeptId().equals(dept.getParentId()))
22.                 .collect(Collectors.toList());
23.         sysDept.setChildren(tempList);
24.         tempList.forEach(dept -> {
25. 2、添加子节点
26.             addChildDept(dept, all);
27.         });
28.     }

效果展示:

方式二、利用Hutool工具进行实现

1. private List<Tree<String>> getSysDepts(String deptId) {
2. // 获取所有数据
3.         List<SysDept> all = getAllDept();
4. //配置
5. TreeNodeConfig treeNodeConfig = new TreeNodeConfig();
6. // 自定义属性名 都要默认值的
7.         treeNodeConfig.setIdKey("deptId");
8. // 最大递归深度
9.         treeNodeConfig.setDeep(4);
10. 
11. //转换器 (这里参数的deptId,指的是最外层的deptId值)
12.         List<Tree<String>> treeNodes = TreeUtil.build(all, deptId, treeNodeConfig,
13.                 (treeNode, tree) -> {
14.                     tree.setParentId(treeNode.getParentId());
15. // 扩展属性 ...(可以自行设置需要返回的字段)
16.                     tree.putExtra("deptId", treeNode.getDeptId());
17.                     tree.putExtra("status", treeNode.getStatus());
18.                 });
19. return treeNodes;
20.     }

效果展示:

目录
相关文章
|
2月前
|
存储 缓存 算法
优化 Java 后台代码的关键要点
【4月更文挑战第5天】本文探讨了优化 Java 后台代码的关键点,包括选用合适的数据结构与算法、减少不必要的对象创建、利用 Java 8 新特性、并发与多线程处理、数据库和缓存优化、代码分析与性能调优、避免阻塞调用、JVM 调优以及精简第三方库。通过这些方法,开发者可以提高系统性能、降低资源消耗,提升用户体验并减少运营成本。
|
2月前
|
监控 Java API
提升 Java 后台性能的十大方法
【4月更文挑战第5天】本文介绍了提升 Java 后台性能的十大方法,包括 JVM 参数调整、代码优化、并发编程、数据库性能优化、I/O 优化、微服务架构、API 设计、负载均衡、容器化和编排以及性能监控。通过这些方法,可以从代码到系统层面全面提升 Java 应用的效率和响应性。注意早期设计对性能的影响,持续优化是关键。
|
17天前
|
前端开发 JavaScript Java
计算机Java项目|基于Web的足球青训俱乐部管理后台系统的设计与开发
计算机Java项目|基于Web的足球青训俱乐部管理后台系统的设计与开发
|
18天前
|
前端开发 Java 关系型数据库
Java后台学习路线
Java后台学习路线
27 5
|
17天前
|
算法 前端开发 Java
探讨Java中递归构建树形结构的算法
探讨Java中递归构建树形结构的算法
9 1
|
6天前
|
Java
JAVA构建List集合为树形结构的方法和代码
JAVA构建List集合为树形结构的方法和代码
|
18天前
|
Java
java后台技术栈
java后台技术栈
20 0
|
27天前
|
Java
java后台拼接字符串查询语句@小霸王
java后台拼接字符串查询语句@小霸王
14 0
|
2月前
|
SQL 存储 前端开发
【java】树形结构分页(真分页)
【java】树形结构分页(真分页)
56 1
|
2月前
|
设计模式 安全 Java
[设计模式Java实现附plantuml源码~结构型]树形结构的处理——组合模式
[设计模式Java实现附plantuml源码~结构型]树形结构的处理——组合模式