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;
    }

总结

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

相关文章

  • SpringCloud Zuul服务功能与使用方法解析

    SpringCloud Zuul服务功能与使用方法解析

    这篇文章主要介绍了SpringCloud Zuul服务功能与使用方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-05-05
  • Java排序算法中的选择排序算法实现

    Java排序算法中的选择排序算法实现

    这篇文章主要介绍了Java排序算法中的选择排序算法实现,选择排序算法的实现思路类似插入排序,分已排序区间和未排序区间,选择排序每次会从未排序区间中找到最小(大)的元素,将其放到已排序区间的末尾,需要的朋友可以参考下
    2023-12-12
  • Springboot项目Mybatis升级为Mybatis-Plus的详细步骤

    Springboot项目Mybatis升级为Mybatis-Plus的详细步骤

    在许多 Java 项目中,MyBatis 是一个广泛使用的 ORM 框架,然而,随着 MyBatis-Plus 的出现,许多开发者开始迁移到这个更加简洁、高效的工具,它在 MyBatis 的基础上提供了更多的功能,所以本文将介绍Springboot项目Mybatis升级为Mybatis-Plus的详细步骤
    2025-03-03
  • springboot整合easy-es实现数据的增删改查的示例代码

    springboot整合easy-es实现数据的增删改查的示例代码

    Easy-Es是一款基于ElasticSearch官方提供的RestHighLevelClient打造的低码开发框架,本文主要介绍了springboot整合easy-es实现数据的增删改查的示例代码,具有一定的参考价值,感兴趣的可以了解一下
    2024-03-03
  • Java源码解析阻塞队列ArrayBlockingQueue常用方法

    Java源码解析阻塞队列ArrayBlockingQueue常用方法

    今天小编就为大家分享一篇关于Java源码解析阻塞队列ArrayBlockingQueue常用方法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-01-01
  • Spring boot security权限管理集成cas单点登录功能的实现

    Spring boot security权限管理集成cas单点登录功能的实现

    这篇文章主要介绍了Spring boot security权限管理集成cas单点登录,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-03-03
  • Java判断字符串是否在List中的方案详解(忽略大小写)

    Java判断字符串是否在List中的方案详解(忽略大小写)

    对于需要频繁调用且数据量大的情况,有几种优化方案可以选择,下面给大家分享三种方案给大家详细介绍java字符串判断是否在list中,感兴趣的朋友一起看看吧
    2025-05-05
  • java中List接口的方法详解

    java中List接口的方法详解

    这篇文章主要介绍了java中List接口的方法详解,List接口是继承Collection接口,所以Collection集合中有的方法,List集合也继承过来,本文主要介绍一下list下的方法,需要的朋友可以参考下
    2023-10-10
  • Java与Http协议的详细介绍

    Java与Http协议的详细介绍

    这篇文章主要介绍了Java与Http协议的详细介绍的相关资料,这里提供实例来帮助大家学习理解这部分内容,需要的朋友可以参考下
    2017-09-09
  • 详谈jpa中表的@OneToMany等关联关系

    详谈jpa中表的@OneToMany等关联关系

    这篇文章主要介绍了详谈jpa中表的@OneToMany等关联关系,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-12-12

最新评论