Java后台返回树形结构的二种实现方式
更新时间:2026年06月29日 09:34:11 作者:Jamie Chyi
本文介绍了两种Java后台生成树形结构的方法,包括递归实现和使用Hutool工具的方式,并展示了各自的实现效果,为开发者提供实用参考
Java后台返回树形结构
方式一、使用递归方式实现
private List<SysDept> getSysDepts(String deptId) {
// 1、获取表中所有数据 (自行根据实际场景拿到所有表数据)
List<SysDept> all = getAllDept();
// 3、返回的结果集
List<SysDept> tree = new ArrayList<>();
// 4、获取到最外层的部门信息
List<SysDept> parentSysDept = all.stream().filter(dept -> dept.getDeptId().equals(deptId)).collect(Collectors.toList());
if (CollectionUtils.isNotEmpty(parentSysDept)){
// 5、取出部门信息
SysDept dept = parentSysDept.get(0);
// 6、放入集合中
tree.add(dept);
// 7、添加子节点
addChildDept(dept, all);
}
return tree;
}
private void addChildDept(SysDept sysDept, List<SysDept> all) {
// 1、拿到所传部门的字部门列表
List<SysDept> tempList = all.stream()
.filter(dept -> sysDept.getDeptId().equals(dept.getParentId()))
.collect(Collectors.toList());
sysDept.setChildren(tempList);
tempList.forEach(dept -> {
2、添加子节点
addChildDept(dept, all);
});
}效果展示:

方式二、利用Hutool工具进行实现
private List<Tree<String>> getSysDepts(String deptId) {
// 获取所有数据
List<SysDept> all = getAllDept();
//配置
TreeNodeConfig treeNodeConfig = new TreeNodeConfig();
// 自定义属性名 都要默认值的
treeNodeConfig.setIdKey("deptId");
// 最大递归深度
treeNodeConfig.setDeep(4);
//转换器 (这里参数的deptId,指的是最外层的deptId值)
List<Tree<String>> treeNodes = TreeUtil.build(all, deptId, treeNodeConfig,
(treeNode, tree) -> {
tree.setParentId(treeNode.getParentId());
// 扩展属性 ...(可以自行设置需要返回的字段)
tree.putExtra("deptId", treeNode.getDeptId());
tree.putExtra("status", treeNode.getStatus());
});
return treeNodes;
}效果展示:

总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
永久解决 Intellij idea 报错:Error :java 不支持发行版本5的问题
这篇文章主要介绍了永久解决 Intellij idea 报错:Error :java 不支持发行版本5的问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2021-02-02
Java Iterator 的底层原理与 Iterable 的设计美学
本文深入解析Java集合遍历背后的Iterator机制,探讨了增强for循环的真面目及为什么一边遍历一边删除会抛出异常,并提供了解决方案及最佳实践,感兴趣的朋友一起看看吧2026-06-06
SpringBoot实现websocket服务端及客户端的详细过程
文章介绍了WebSocket通信过程、服务端和客户端的实现,以及可能遇到的问题及解决方案,感兴趣的朋友一起看看吧2024-12-12


最新评论