Java树形结构递归查询方式

 更新时间:2024年12月17日 10:32:23   作者:冷冷清清中的风风火火  
文章介绍了Java中实现树形结构递归查询的方法,首先找出所有的根节点,然后通过循环遍历根节点,找到每个根节点的子节点,最终构建完整的树形结构,这是一种有效的递归查询思路,适用于需要层次化展示数据的场景

Java树形结构递归查询

思路

先找到所有的根节点,再通过循环遍历所有的根节点,找到每个跟节点的子节点,最终形成一个树形结构

    /**
     * 构建树形结构数据new
     * @param org
     * @return
     */
    public List<OrgEntity> builTree(OrgEntity org){
        List<OrgEntity> treeMenus =new ArrayList<>();
		// 查询所有数据
        List<OrgEntity> reList = this.queryListByOrg(org);
		// 获取根节点数据
        List<OrgEntity> rootList = this.getRootNode(reList);
        for(OrgEntity node : rootList){
		    // 为根节点数据递归添加字点数据
            node=buildChilTree(node,reList);
            treeMenus.add(node);
        }
        return treeMenus;
    }
    /**
     * 获取根节点new
     * @param list
     * @return
     */
    public List<OrgEntity> getRootNode(List<OrgEntity> list){
        List<OrgEntity> rootMenuLists =new ArrayList
		// 遍历list,获取根节点数据
        for(OrgEntity menuNode : list) {
            boolean isExit = false;
            for(OrgEntity node : list){
                if(menuNode.getParentId() != null && menuNode.getParentId().equals(node.getId())){
                    isExit = true;
                    break;
                }
            }
			// 如果遍历该数据没有上级节点,就放到根节点list中,否则就不放
            if(!isExit){
                rootMenuLists.add(menuNode);
            }
        }
        return rootMenuLists;
    }
    //递归,建立子树形结构new
    public OrgEntity buildChilTree(OrgEntity pNode,List<OrgEntity> list){
        List<OrgEntity> chilMenus =new  ArrayList<>();
        for(OrgEntity menuNode : list) {
            if(menuNode.getParentId().equals(pNode.getId())) {
                chilMenus.add(buildChilTree(menuNode,list));
            }
        }
        pNode.setChildren(chilMenus);
        return pNode;
    }

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 解决RestTemplate 的getForEntity调用接口乱码的问题

    解决RestTemplate 的getForEntity调用接口乱码的问题

    这篇文章主要介绍了解决RestTemplate 的getForEntity调用接口乱码的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-08-08
  • java.lang.UnsupportedClassVersionError错误的解决办法(附图文)

    java.lang.UnsupportedClassVersionError错误的解决办法(附图文)

    这篇文章主要给大家介绍了关于java.lang.UnsupportedClassVersionError错误的解决办法,"java.lang.UnsupportedClassVersionError"意味着您正在运行的Java版本与编译该类时使用的Java版本不兼容,需要的朋友可以参考下
    2023-10-10
  • 浅谈java异常处理(父子异常的处理)

    浅谈java异常处理(父子异常的处理)

    下面小编就为大家带来一篇浅谈java异常处理(父子异常的处理)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-09-09
  • Java中日期与时间的处理及工具类封装详解

    Java中日期与时间的处理及工具类封装详解

    在项目开发中免不了有对日期时间的处理,但Java中关于日期时间的类太多了,本文就来介绍一下各种类的使用及我们项目中应该怎么选择吧
    2023-07-07
  • Java实现宠物商店管理系统

    Java实现宠物商店管理系统

    这篇文章主要为大家详细介绍了Java实现宠物商店管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-10-10
  • Java 在PPT中添加混合图表过程详解

    Java 在PPT中添加混合图表过程详解

    这篇文章主要介绍了Java 在PPT中添加混合图表过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-09-09
  • Java调用pyzbar解析base64二维码过程解析

    Java调用pyzbar解析base64二维码过程解析

    这篇文章主要介绍了Java调用pyzbar解析base64二维码过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-08-08
  • SpringCloud Gateway中GatewayFilterChain执行流程详解

    SpringCloud Gateway中GatewayFilterChain执行流程详解

    Spring Cloud Gateway旨在为微服务架构提供一种简单有效的、统一的 API 路由管理方式。Spring Cloud Gateway 作为 Spring Cloud 生态系中的网关,它不仅提供统一的路由方式,并且基于 Filter 链的方式提供了网关基本的功能,例如:安全、监控/埋点和限流等
    2022-10-10
  • 汇总java调用python方法

    汇总java调用python方法

    这篇文章主要为大家详细介绍了java调用python的方法,文章中介绍了三种java调用python方法,感兴趣的朋友可以参考一下
    2016-02-02
  • SVN出现提示org.apache.subversion.javahl.ClientException: Attempted to lock an already-locked dir解决方案

    SVN出现提示org.apache.subversion.javahl.ClientException: Attempt

    这篇文章主要介绍了SVN出现提示org.apache.subversion.javahl.ClientException: Attempted to lock an already-locked dir解决方案的相关资料,需要的朋友可以参考下
    2016-12-12

最新评论