树形结构例子,java 树型结构
00-1010序数据库表结构实现思路具体代码1。创建与数据库表数据2一致的数据。树形结构实体类
00-1010由于业务需要,后端需要向前端返回一个树形结构。包含父子节点的数据已存储在数据库中。现在需要做的是如何以树形结构的形式返回到前端。
目录
00-1010 1.获取带有父子节点的集合数据。
2.遍历集合数据以获取所有根节点。
3.遍历根节点并获取所有子节点。
4.递归子节点,将递归子节点连接到它们的父节点,直到子节点为空并且递归完成。
5.递归后,以集合的形式返回。当它被返回到前端时,它被转换成JSON格式,然后被返回。
前言
数据库表结构
包com . lyq . generate tree;导入com . Alibaba . fast JSON . JSON;导入Java . util . ArrayList;导入Java . util . list;/* * * @ author :[liyanqiang]* @ version 3360[v 1.0]* @ class name 3360 tree main * @ Description 3360[Description说明了该类的功能]* @ create TIME 3360[2022/5/0:05]* @ UPDATE user 3360[柳岩Qiang]* @ UPDATE TIME 3360[2022/5/3 0:05]* @ UPDATE REMARK 3360[本次修改说明//Create data list . add(new Tree( 22650 , 0 ,第一周);List.add(新树( 22651 , 22650 , 1.1课堂练习:《你认为以下属于人工智能的是什么呢?》,时间:0.5分钟);List.add(新树( 22652 , 22650 , 1.2话题讨论:《使用循环代码块绘制正五角星》,时间:5min ));List.add(新树( 22653 , 22650 , 1.3话题讨论:《延时测试》,时间:0.5分钟);List.add (newtree (22654 , 22650 , 1.4问卷:《测试延时时间》,时间:0.5分钟);列表。添加(新树( 22655 , 22650 , 1.5研究与挑战:翟文标老师开播,时间:1min,[N]);列表。添加(新树( 22656 , 22650 , 1.6研究与挑战:米新疆教授开播,时间:1min,[N]);列表。添加(新树( 22657 , 22656 , 1.6.1研究与挑战:丁老师开播,时间:1min,[N]));列表。添加(新树( 22658 , 22656 , 1.6.2研究与挑战:郝小军老师开播,时间:1min,[N]);列表。添加(新树( 22659 , 22656 , 1.6.3研究与挑战:张娟老师开播,时间:1min,[N]);列表。添加(新树( 22660 , 22656 , 1.6.4研究与挑战:王怀军老师开播,时间:1min,[N]);列表。添加(新树( 22661 , 22656 , 1.6.5研究与挑战:何草老师开播,时间:1min,[N]);列表。添加(新树( 22662 , 22656 , 1.6.6研究与挑战:吴欣丽老师开播,时间:1min,[N]);List.add (newtree (22663 , 22656 , 1.6.7一键签到:人脸识别,时间:2分钟);List.add (newtree (22664 , 22656 , 1.6.8手势签到:人脸识别22,时间:2分钟);列表。添加(新树( 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<com.lyq.generateTree.Tree>*/ 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; } /* * @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<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; } /* * @version V1.0 * Title: getRootNode * @author LiuYanQiang * @description 获取全部根节点 * @createTime 2022/5/3 0:18 * @param [list] * @return java.util.List<com.lyq.generateTree.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树形结构内容请搜索盛行IT以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行IT!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。