Java实现树形结构的代码怎么写
发表于:2024-11-22 作者:千家信息网编辑
千家信息网最后更新 2024年11月22日,本篇内容介绍了"Java实现树形结构的代码怎么写"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!数据库
千家信息网最后更新 2024年11月22日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安全错误
数据库的锁怎样保障安全
杭州app软件开发定制公司
九台区网络技术咨询排名靠前
棋牌软件开发大连
用阿里云服务器安全
质问腾讯网络安全
现代通信网络技术6
软件开发需求申请单
数据库的数据对象有哪些
数据库设计教务系统图
tsa数据库是什么核酸
成都平民网络技术有限公司
服务器如何变成普通电脑
败笔网络技术安全
mssql 服务器
如何评价软件开发中的优点
轻薄本适合不适合软件开发
大专学网络安全
订餐软件开发背景
可扩展性是什么意思数据库
web 服务器 软件
湖北省网络安全与宣传片
网络安全视频心得体会800字
mysql城市级联数据库
网络安全普法宣传具体举措
服务器 SSI电源标准
软件开发调剂到软件设计
南京思瀚网络技术待遇
新起点软件开发
高通接受网络安全管理办法
如何买断服务器