Java实现树形结构的代码怎么写
发表于:2025-02-21 作者:千家信息网编辑
千家信息网最后更新 2025年02月21日,本篇内容介绍了"Java实现树形结构的代码怎么写"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!数据库
千家信息网最后更新 2025年02月21日Java实现树形结构的代码怎么写
本篇内容介绍了"Java实现树形结构的代码怎么写"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
数据库表结构
实现思路
1、拿到有父子节点的集合数据
2、遍历集合数据,拿到所有的根节点
3、遍历根节点,拿到所有的子节点
4、递归子节点,将递归的子节点接上其父节点,直到子节点为空,递归完成
5、递归好后以集合形式返回,返回前端时以JSON格式转换后返回
具体代码
1、造数据,和数据库表数据一致
package com.lyq.generateTree; import com.alibaba.fastjson.JSON; import java.util.ArrayList;import java.util.List; /** * @author : [LiuYanQiang] * @version : [v1.0] * @className : TreeMain * @description : [描述说明该类的功能] * @createTime : [2022/5/3 0:05] * @updateUser : [LiuYanQiang] * @updateTime : [2022/5/3 0:05] * @updateRemark : [描述说明本次修改内容] */public class TreeMain { public static void main(String[] args) { Listlist = new ArrayList<>(); //造数据 list.add(new Tree("22650", "0", "第一周")); list.add(new Tree("22651", "22650", "1.1 随堂练习:《你认为以下属于人工智能的是什么呢?》,时间:0.5min")); list.add(new Tree("22652", "22650", "1.2 主题讨论:《使用循环代码块绘制正五角星》,时间:5min")); list.add(new Tree("22653", "22650", "1.3 主题讨论:《延时测试》,时间:0.5min")); list.add(new Tree("22654", "22650", "1.4 调查问卷:《测试延时时间》, 时间:0.5min")); list.add(new Tree("22655", "22650", "1.5 研究与挑战:翟文彪老师开播啦,时间:1min,[N]")); list.add(new Tree("22656", "22650", "1.6 研究与挑战:米新江教授开播啦,时间:1min,[N]")); list.add(new Tree("22657", "22656", "1.6.1 研究与挑战:丁中文老师开播啦,时间:1min,[N]")); list.add(new Tree("22658", "22656", "1.6.2 研究与挑战:郝晓军老师开播啦,时间:1min,[N]")); list.add(new Tree("22659", "22656", "1.6.3 研究与挑战:张娟老师开播啦,时间:1min,[N]")); list.add(new Tree("22660", "22656", "1.6.4 研究与挑战:王怀军老师开播啦,时间:1min,[N]")); list.add(new Tree("22661", "22656", "1.6.5 研究与挑战:何操老师开播啦,时间:1min,[N]")); list.add(new Tree("22662", "22656", "1.6.6 研究与挑战:武新丽老师开播啦,时间:1min,[N]")); list.add(new Tree("22663", "22656", "1.6.7 一键签到:人脸识别,时间:2min")); list.add(new Tree("22664", "22656", "1.6.8 手势签到:人脸识别22,时间:2min")); list.add(new Tree("22665", "22656", "1.6.9 研究与挑战:吴欣明老师开播啦,时间:1min,[N]")); list.add(new Tree("22666", "22656", "1.6.10 研究与挑战:程艳艳老师开播啦,时间:1min,[N]")); list.add(new Tree("22667", "22656", "1.6.11 研究与挑战:本学期课程内容,时间:0.5min")); list.add(new Tree("22668", "22656", "1.6.12 研究与挑战:米老师的教学团队介绍,时间:0.3min")); list.add(new Tree("22669", "22650", "1.7 研究与挑战:米老师的教学团队介绍,时间:0.3min")); list.add(new Tree("22670", "22650", "1.8 研究与挑战:米老师的教学团队介绍,时间:0.3min")); list.add(new Tree("22671", "22650", "1.9 研究与挑战:助教机器人提醒您参与活动,时间:2min")); list.add(new Tree("22672", "22650", "1.10 研究与挑战:AR系统使用教程-学生端,时间:5min")); list.add(new Tree("22673", "22672", "1.10.1 研究与挑战:不一样的课堂修改版,时间:0.5min")); list.add(new Tree("22674", "22673", "1.10.1.1 研究与挑战:下载AR APP,时间:8min")); list.add(new Tree("22675", "22674", "1.10.1.1.1 研究与挑战:修改版手机端AR助教机器人的登录,时间:5min")); list.add(new Tree("22676", "22674", "1.10.1.1.2 研究与挑战:app页面展示,时间:2min")); list.add(new Tree("22677", "22674", "1.10.1.1.3 研究与挑战:使用网页版方式, 时间:3min")); list.add(new Tree("22678", "22674", "1.10.1.1.4 研究与挑战:《使用学习通账号密码登录AR网页版》,时间:5min")); list.add(new Tree("22679", "22674", "1.10.1.1.5 主题讨论:修改时间2022年4月4日《上传:进入AR网页版后的界面》,时间:3min")); list.add(new Tree("22680", "22673", "1.10.1.2 研究与挑战:AR学生端教程视频,时间:2min")); list.add(new Tree("22681", "22672", "1.10.2 研究与挑战:修改时间2022年4月4日温馨提示-钉钉,时间:0.3min")); list = new ReplacementTree().builTree(list); String jsonString = JSON.toJSONString(list); System.out.println(jsonString); }}
2、树型结构实体类
package com.lyq.generateTree; import java.util.ArrayList;import java.util.List; /** * @author : [LiuYanQiang] * @version : [v1.0] * @className : ReplacementTree * @description : [树型结构装换] * @createTime : [2022/5/2 23:37] * @updateUser : [LiuYanQiang] * @updateTime : [2022/5/2 23:37] * @updateRemark : [描述说明本次修改内容] */public class ReplacementTree { /* * @version V1.0 * Title: builTree * @author LiuYanQiang * @description 始树形结构创建 * @createTime 2022/5/3 0:18 * @param [list] * @return java.util.List*/ public List builTree(List list) { List treeList = new ArrayList<>(); for (Tree tree : this.getRootNode(list)) { //建立子树节点 tree = this.buildChilTree(tree,list); //为根节点设置子树节点 treeList.add(tree); } return treeList; } /* * @version V1.0 * Title: buildChilTree * @author LiuYanQiang * @description 通过递归来创建子树形结构 * @createTime 2022/5/3 0:18 * @param [tree, list] * @return com.lyq.generateTree.Tree*/ private Tree buildChilTree(Tree tree,List list) { List treeList = new ArrayList<>(); for (Tree t : list) { //判断当前父节点是否存在子节点 if (t.getP_id().equals(tree.getId())) { treeList.add(this.buildChilTree(t,list)); } } tree.setChildren(treeList); return tree; } /* * @version V1.0 * Title: getRootNode * @author LiuYanQiang * @description 获取全部根节点 * @createTime 2022/5/3 0:18 * @param [list] * @return java.util.List */ private List getRootNode(List list) { List rootList = new ArrayList<>(); for (Tree tree : list) { if (tree.getP_id().equals("0")) { rootList.add(tree); } } return rootList; }}
最后返回情况如下
"Java实现树形结构的代码怎么写"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!
时间
研究
节点
老师
结构
数据
内容
递归
代码
树形
主题
团队
教学
网页
人脸
学生
情况
教程
数据库
更多
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
软件开发质保一年成本
网络安全儿童诗歌
网络安全 健康快乐成长教案
上海亿赛通公司网络安全职位
服务器决定联网机的数量吗
宜兴微型软件开发维修电话
mysql数据库浮点数类型
网络技术工程招聘
岛津数据库数据如何备份
北京中企神州网络技术有限公
梦幻5月新开服务器
什么叫应用账号数据库
数据库主从关系
报表可视化python数据库
无线传感器网络安全图片
松江区推广软件开发哪个好
江门市网络安全和信息化
数据库开发免费软件有哪些
软件开发环境有什么用
锦尚互联网科技有限公司招聘
具有网络技术的医药股
软件开发技术教学大纲
数据库面试自我介绍模板
服务器在终端上有监听
宜昌极客网络技术
公安网络技术部门工作时间
数据库程序设计mysql
网站sql数据库怎么看
拼多多服务器dns多少
sql数据库sum函数