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.     }

效果展示:

目录
相关文章
|
5月前
|
存储 缓存 算法
优化 Java 后台代码的关键要点
【4月更文挑战第5天】本文探讨了优化 Java 后台代码的关键点,包括选用合适的数据结构与算法、减少不必要的对象创建、利用 Java 8 新特性、并发与多线程处理、数据库和缓存优化、代码分析与性能调优、避免阻塞调用、JVM 调优以及精简第三方库。通过这些方法,开发者可以提高系统性能、降低资源消耗,提升用户体验并减少运营成本。
73 14
|
4月前
|
前端开发 JavaScript Java
计算机Java项目|基于Web的足球青训俱乐部管理后台系统的设计与开发
计算机Java项目|基于Web的足球青训俱乐部管理后台系统的设计与开发
|
26天前
|
Java 数据处理
技术分享:高效与灵活并存——Java版通用树形结构转换工具的实现与应用
在软件开发中,树形结构的数据表现形式无处不在,从文件系统的目录树到组织架构的部门树,再到各类产品的分类结构。处理这些具有层级关系的数据时,将其转换为树形结构以便展示和操作显得尤为重要。Java作为一门成熟的编程语言,虽然提供了强大的集合框架,但并未直接提供树形结构转换的内置工具。因此,开发一个高效且灵活的通用树形结构转换工具成为许多项目中的必备需求。
29 2
|
2月前
|
Java
用JAVA架建List集合为树形结构的代码方法
这段代码定义了一个表示树形结构的 `Node` 类和一个用于构建树形结构的 `TreeController`。`Node` 类包含基本属性如 `id`、`pid`、`name` 和 `type`,以及子节点列表 `children`。`TreeController` 包含初始化节点列表并将其转换为树形结构的方法。通过过滤和分组操作实现树形结构的构建。详情可见:[代码示例链接1](http://www.zidongmutanji.com/zsjx/43551.html),[代码效果参考链接2](https://www.257342.com/sitemap/post.html)。
32 5
|
2月前
|
存储 缓存 算法
优化 Java 后台代码的关键要点
优化 Java 后台代码的关键要点
35 2
|
2月前
|
消息中间件 Java 数据库
解密 Java 后台架构设计之道
解密 Java 后台架构设计之道
50 2
|
2月前
|
监控 Java API
提升 Java 后台性能的十大方法
提升 Java 后台性能的十大方法
37 2
|
2月前
|
存储 缓存 算法
优化Java后台性能的五大最佳实践
在高并发环境中,Java后台系统的性能至关重要。本文探讨了五种有效的优化方法,包括JVM调优、数据库连接池配置、代码优化技巧、异步处理的使用以及缓存机制的实现。通过这些实践,开发人员可以显著提升系统的响应速度和稳定性。
|
2月前
|
监控 算法 Java
企业应用面临高并发等挑战,优化Java后台系统性能至关重要
随着互联网技术的发展,企业应用面临高并发等挑战,优化Java后台系统性能至关重要。本文提供三大技巧:1)优化JVM,如选用合适版本(如OpenJDK 11)、调整参数(如使用G1垃圾收集器)及监控性能;2)优化代码与算法,减少对象创建、合理使用集合及采用高效算法(如快速排序);3)数据库优化,包括索引、查询及分页策略改进,全面提升系统效能。
37 0
|
3月前
|
SQL XML JavaScript
【若依Java】15分钟玩转若依二次开发,新手小白半小时实现前后端分离项目,springboot+vue3+Element Plus+vite实现Java项目和管理后台网站功能
摘要: 本文档详细介绍了如何使用若依框架快速搭建一个基于SpringBoot和Vue3的前后端分离的Java管理后台。教程涵盖了技术点、准备工作、启动项目、自动生成代码、数据库配置、菜单管理、代码下载和导入、自定义主题样式、代码生成、启动Vue3项目、修改代码、以及对代码进行自定义和扩展,例如单表和主子表的代码生成、树形表的实现、商品列表和分类列表的改造等。整个过程详细地指导了如何从下载项目到配置数据库,再到生成Java和Vue3代码,最后实现前后端的运行和功能定制。此外,还提供了关于软件安装、环境变量配置和代码自动生成的注意事项。
1580 2
下一篇
无影云桌面