文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Java实现树形结构的代码怎么写

2023-06-30 14:14

关注

本篇内容介绍了“Java实现树形结构的代码怎么写”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

数据库表结构

Java实现树形结构的代码怎么写

实现思路

拿到有父子节点的集合数据

遍历集合数据,拿到所有的根节点

遍历根节点,拿到所有的子节点

递归子节点,将递归的子节点接上其父节点,直到子节点为空,递归完成

递归好后以集合形式返回,返回前端时以JSON格式转换后返回

具体代码

1、造数据,和数据库表数据一致

package com.lyq.generateTree; import com.alibaba.fastjson.JSON; import java.util.ArrayList;import java.util.List; public class TreeMain {    public static void main(String[] args) {        List<Tree> list = 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; public class ReplacementTree {         public List<Tree> builTree(List<Tree> list) {        List<Tree> treeList = new ArrayList<>();        for (Tree tree : this.getRootNode(list)) {            //建立子树节点            tree = this.buildChilTree(tree,list);            //为根节点设置子树节点            treeList.add(tree);        }        return treeList;    }         private Tree buildChilTree(Tree tree,List<Tree> list) {        List<Tree> 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;    }         private List<Tree> getRootNode(List<Tree> list) {        List<Tree> rootList = new ArrayList<>();        for (Tree tree : list) {            if (tree.getP_id().equals("0")) {                rootList.add(tree);            }        }        return rootList;    }}

最后返回情况如下

Java实现树形结构的代码怎么写

“Java实现树形结构的代码怎么写”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯