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

效果展示:

目录
相关文章
|
1月前
|
关系型数据库 MySQL Java
【IDEA】java后台操作mysql数据库驱动常见错误解决方案
【IDEA】java后台操作mysql数据库驱动常见错误解决方案
61 0
|
1月前
|
小程序 Java
小程序访问java后台失败解决方案
小程序访问java后台失败解决方案
44 2
|
1月前
|
小程序 JavaScript Java
小程序访问java后台
小程序访问java后台
27 1
|
1月前
|
Java 测试技术 Maven
编写一个java后台
编写一个java后台
14 1
|
5月前
|
前端开发 JavaScript Java
计算机Java项目|基于Web的足球青训俱乐部管理后台系统的设计与开发
计算机Java项目|基于Web的足球青训俱乐部管理后台系统的设计与开发
|
1月前
|
小程序 Java
小程序通过get请求提交数据到java后台
小程序通过get请求提交数据到java后台
28 0
|
2月前
|
Java 数据处理
技术分享:高效与灵活并存——Java版通用树形结构转换工具的实现与应用
在软件开发中,树形结构的数据表现形式无处不在,从文件系统的目录树到组织架构的部门树,再到各类产品的分类结构。处理这些具有层级关系的数据时,将其转换为树形结构以便展示和操作显得尤为重要。Java作为一门成熟的编程语言,虽然提供了强大的集合框架,但并未直接提供树形结构转换的内置工具。因此,开发一个高效且灵活的通用树形结构转换工具成为许多项目中的必备需求。
71 2
|
3月前
|
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)。
41 5
|
3月前
|
存储 缓存 算法
优化 Java 后台代码的关键要点
优化 Java 后台代码的关键要点
39 2
|
3月前
|
消息中间件 Java 数据库
解密 Java 后台架构设计之道
解密 Java 后台架构设计之道
64 2