Java递归以及根据节点取子集合方式

 更新时间:2024年12月17日 09:58:12   作者:princeAladdin  
文章介绍了Java中递归的使用方法,包括如何根据节点构建树形结构以及如何反向递归获取所有子节点,提供了递归方法的参数解释和示例代码,希望对大家有所帮助

Java递归以及根据节点取子集合

1.示例

 //递归树形
    private List<DeptVO> getDeptTree(List<DeptVO> childList, List<DeptVO> parentList) {
        for (DeptVO p : parentList) {
            List<DeptVO> twoLevelMenuTree = childList.stream()
                    .filter(s -> Objects.equals(s.getUpDeptId(), p.getDeptId()))
                    .collect(Collectors.toList());
            if (twoLevelMenuTree.size() > 0) {
                p.setChildren(twoLevelMenuTree);
                getDeptTree(childList, twoLevelMenuTree);
            }
        }
        return parentList;
    }

2.递归参数解释

以上childList为所有数据的集合,parentList为最高节点的数据,这里是根据子节点的上级部门id等于父节点部门id做联系形成树形结构。

3.反向递归(取到子节点的所有子节点)

public void getChildrenByTree(DeptVO result, List<DeptVO> children, String deptId) {
        if (result == null) {
            return;
        }
        if (result.getDeptId().equals(deptId)) {
            if (result.getChildren() != null) {
                children.addAll(result.getChildren());
                return;
            }
        }
        if (result.getChildren() != null) {
            for (DeptVO child : result.getChildren()) {
                getChildrenByTree(child, children, deptId);
            }
        }
    }

4.反向递归参数解释

result是顶级父节点的数据(包含所有子节点),children是一个用来接收子节点数据的集合,使用时创建一个空的list传进方法即可,deptId即为需要查找所有子节点的父节点的id。

总结

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

相关文章

  • springboot项目idea热部署的教程详解

    springboot项目idea热部署的教程详解

    这篇文章主要介绍了springboot项目idea热部署,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-08-08
  • java 中HashMap、HashSet、TreeMap、TreeSet判断元素相同的几种方法比较

    java 中HashMap、HashSet、TreeMap、TreeSet判断元素相同的几种方法比较

    这篇文章主要介绍了从源码的角度浅析HashMap、TreeMap元素的存储和获取元素的逻辑;从Map与Set之间的关系浅析常用的Set中元素的存储和判断是否重复的逻辑,需要的朋友可以参考下
    2017-01-01
  • 使用IDEA工具配置和运行vue项目及遇到的坑

    使用IDEA工具配置和运行vue项目及遇到的坑

    这篇文章主要介绍了使用IDEA工具配置和运行vue项目及遇到的坑,需要的朋友可以参考下
    2018-09-09
  • Java try-with-resource语法使用解析

    Java try-with-resource语法使用解析

    这篇文章主要介绍了Java try-with-resource语法使用解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-03-03
  • Springcloud RestTemplate服务调用代码实例

    Springcloud RestTemplate服务调用代码实例

    这篇文章主要介绍了Springcloud RestTemplate服务调用代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-08-08
  • Java编程Webservice指定超时时间代码详解

    Java编程Webservice指定超时时间代码详解

    这篇文章主要介绍了Java编程Webservice指定超时时间代码详解,简单介绍了webservice,然后分享了通过使用JDK对Webservice的支持进行Webservice调用实现指定超时时间完整示例,具有一定借鉴价值,需要的朋友可以参考下。
    2017-11-11
  • Java中循环冗余校验(CRC32)的实现

    Java中循环冗余校验(CRC32)的实现

    CRC校验实用程序库在数据存储和数据通讯领域,为了保证数据的正确,就不得不采用检错的手段,下面这篇文章主要给大家介绍了关于Java中循环冗余校验(CRC32)实现的相关资料,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-10-10
  • SpringBoot整合kaptcha实现图片验证码功能

    SpringBoot整合kaptcha实现图片验证码功能

    这篇文章主要介绍了SpringBoot整合kaptcha实现图片验证码功能,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-07-07
  • SpringBoot的配置文件application.yml及加载顺序详解

    SpringBoot的配置文件application.yml及加载顺序详解

    这篇文章主要介绍了SpringBoot的配置文件application.yml及加载顺序,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-07-07
  • Java使用flyway实现脚本自动化的方法详解

    Java使用flyway实现脚本自动化的方法详解

    Flyway是一个开源的数据库版本控制工具,主要用于管理数据库的版本和变更,它可以自动化地将数据库迁移到不同的版本,同时支持多种数据库类型,本文给大家介绍了如何使用flyway实现脚本自动化,需要的朋友可以参考下
    2023-10-10

最新评论