Java递归实现树形结构的方式有哪些


这篇文章主要介绍“Java递归实现树形结构的方式有哪些”,在日常操作中,相信很多人在Java递归实现树形结构的方式有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java递归实现树形结构的方式有哪些”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!在开发的过程中,很多业务场景需要一个树形结构的结果集进行前端展示,也可以理解为是一个无限父子结构,常见的有报表指标结构、菜单结构等。Java中递归实现树形结构的两种常见方式如下:Java7及以下纯Java递归实现Java8及以上借助lamda表达式实现Java实体类NodePO对应数据库表自己造一些数据模拟从数据库中查询出来的数据:从开发的过程中发现直接操作实体类集合,专门指定某一个实体类封装的方法是不具有普适性的,所以将实体类集合统一转化为Map集合,操作方便,具有一定的普适性:BeanMapUtils自己简单封装一个工具类(不惧普适性勿喷):其中org.springframework.cglib.beans.BeanMap;org.springframework:spring-core依赖下的工具包,spring-core核心依赖只要导入spring-boot-starter依赖即可既然是Java7及以下实现方式,那排序也用最原始的冒泡排序:给定一个节点,获取它的所有子节点:给出一个结果集,构建树形结果集:获取树形结构:打印结果:[{“orderNo”:”_0001″,”children”:[{“orderNo”:”_0002″,”children”:[],”name”:”二级节点1.1″,”id”:”2″,”parentId”:”1″},{“orderNo”:”_0003″,”children”:[],”name”:”二级节点1.2″,”id”:”3″,”parentId”:”1″}],”name”:”一级节点1″,”id”:”1″},{“orderNo”:”_0004″,”children”:[{“orderNo”:”_0005″,”children”:[],”name”:”二级节点2.1″,”id”:”5″,”parentId”:”4″},{“orderNo”:”_0006″,”children”:[{“orderNo”:”_0007″,”children”:[],”name”:”三级节点2.2.1″,”id”:”7″,”parentId”:”6″}],”name”:”二级节点2.2″,”id”:”6″,”parentId”:”4″}],”name”:”一级节点2″,”id”:”4″},{“orderNo”:”_0008″,”children”:[{“orderNo”:”_0009″,”children”:[{“orderNo”:”_0010″,”children”:[{“orderNo”:”_0011″,”children”:[{“orderNo”:”_0012″,”children”:[],”name”:”五级节点3.1.1.1.1″,”id”:”12″,”parentId”:”11″}],”name”:”四级节点3.1.1.1″,”id”:”11″,”parentId”:”10″}],”name”:”三级节点3.1.1″,”id”:”10″,”parentId”:”9″}],”name”:”二级节点3.1″,”id”:”9″,”parentId”:”8″}],”name”:”一级节点3″,”id”:”8″}]树形结构搞定!Java7的方式虽然实现了树形结构,但是有一定的缺点,比如:代码量比较大,逻辑相对较复杂,那Java8是如何简化,如下所示:既然Java8有lamda表达式,那代码我们能省就省,先看排序,一行代码搞定:给定一个节点,获取它的所有子节点:释义:
filter: 过滤,相当于for循环,再if条件判断。
peek: 给定一个节点,往它的children塞子节点。给出一个结果集,构建树形结果集:获取树形结构:打印结果:[{“orderNo”:”_0001″,”children”:[{“orderNo”:”_0002″,”children”:[],”name”:”二级节点1.1″,”id”:”2″,”parentId”:”1″},{“orderNo”:”_0003″,”children”:[],”name”:”二级节点1.2″,”id”:”3″,”parentId”:”1″}],”name”:”一级节点1″,”id”:”1″},{“orderNo”:”_0004″,”children”:[{“orderNo”:”_0005″,”children”:[],”name”:”二级节点2.1″,”id”:”5″,”parentId”:”4″},{“orderNo”:”_0006″,”children”:[{“orderNo”:”_0007″,”children”:[],”name”:”三级节点2.2.1″,”id”:”7″,”parentId”:”6″}],”name”:”二级节点2.2″,”id”:”6″,”parentId”:”4″}],”name”:”一级节点2″,”id”:”4″},{“orderNo”:”_0008″,”children”:[{“order免费云主机域名No”:”_0009″,”children”:[{“orderNo”:”_0010″,”children”:[{“orderNo”:”_0011″,”children”:[{“orderNo”:”_0012″,”children”:[],”name”:”五级节点3.1.1.1.1″,”id”:”12″,”parentId”:”11″}],”name”:”四级节点3.1.1.1″,”id”:”11″,”parentId”:”10″}],”name”:”三级节点3.1.1″,”id”:”10″,”parentId”:”9″}],”name”:”二级节点3.1″,”id”:”9″,”parentId”:”8″}],”name”:”一级节点3″,”id”:”8″}]树形结构搞定!两种实现方式对比一下,你就说Java8的方式哇塞不哇塞!!!到此,关于“Java递归实现树形结构的方式有哪些”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注百云主机网站,小编会继续努力为大家带来更多实用的文章!

相关推荐: js计算时间差代码怎么写

这篇文章主要讲解了“js计算时间差代码怎么写”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“js计算时间差代码怎么写”吧!var begintime_ms = Date.parse(new Date(begint…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

Like (0)
Donate 微信扫一扫 微信扫一扫
Previous 02/16 22:30
Next 02/16 22:30

相关推荐