JAVA8 之递归实现

这篇具有很好参考价值的文章主要介绍了JAVA8 之递归实现。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Java8 简单实现递归 (树形展示)
JAVA8 之递归实现,Java 8,java文章来源地址https://www.toymoban.com/news/detail-771427.html

/**
     * 获取选择弹窗
     * @param prodClassNm   某一层条件   TODO 
     * @param prodType      某类型
     * @return
     */
    public List<ProdClassSelectPopVo> getProdClassSelectPop(String prodClassNm, String prodType) {
        List<ProdClassSelectPopVo> treeList = new ArrayList<>();
        // 获取所有商品分类
        List<ProdClassSelectPopVo> allList = mproductClassListDao.getProdClassSelectPop(prodType);
        if(CollectionUtil.isNotEmpty(allList)){
            // 1、获取所有数据中过滤一级菜单 2、Map中通过递归函数获取一级节点中的子节点列表
            treeList = allList.stream().filter(subNode -> StringUtils.isNullOrEmpty(subNode.getParentClass())
                            && (subNode.getId() + "/").equals(subNode.getPath()))
                    .map(m -> getChild(m,allList,prodClassNm)).collect(Collectors.toList());
        }
        if(StringUtils.isNotEmpty(prodClassNm)){
            treeList = treeList.stream().filter(f -> CollectionUtil.isNotEmpty(f.getChildren().stream()
                    .filter(item -> item.getProdClassNm().contains(prodClassNm)).collect(Collectors.toList()))
            ).collect(Collectors.toList());
        }
        return treeList;
    }
    /**
     * 递归辅助函数
     * @param parent 上级节点
     * @param allList 所有数据
     * @return
     */
    private ProdClassSelectPopVo getChild(ProdClassSelectPopVo parent,List<ProdClassSelectPopVo> allList,String prodClassNm){
        List<ProdClassSelectPopVo> treeVo = allList.stream()
                .filter(subNode -> StringUtils.isNotEmpty(subNode.getParentClass())
                        && subNode.getParentClass().equals(parent.getId())).map(m -> getChild(m,allList,prodClassNm)).collect(Collectors.toList());
                        // && subNode.getPath().equals(parent.getId() + "/" +subNode.getId() + "/")).collect(Collectors.toList());
                //.map(m -> getChild(m,allList))
        if(StringUtils.isNotEmpty(prodClassNm)){
            treeVo = treeVo.stream().filter(f -> f.getProdClassNm().contains(prodClassNm)).collect(Collectors.toList());
        }
        parent.setChildren(treeVo);
        return parent;
    }

到了这里,关于JAVA8 之递归实现的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • java8 列表通过 stream流 根据对象属性去重的三种实现方法

    0、User对象 1、使用filter进行去重 测试 ①、疑惑 既然 filter 里面调用的是 distinctPredicate 方法,而该方法每次都 new 一个新的 map 对象,那么 map 就是新的,怎么能做到可以过滤呢 ②、解惑 先看一下 filter 的部分实现逻辑,他使用了函数式接口 Predicate ,每次调用filter时,会使用

    2024年01月20日
    浏览(108)
  • Java8用Stream流一行代码实现数据分组统计,排序,最大值、最小值、平均值、总数、合计

    Java8对数据处理可谓十分流畅,既不改变数据,又能对数据进行很好的处理,今天给大家演示下,用Java8的Stream如何对数据进行分组统计,排序,求和等 汇总统计方法 找到汇总统计的方法。这些方法属于java 8的汇总统计类。 getAverage(): 它返回所有接受值的平均值。 getCount():

    2023年04月20日
    浏览(66)
  • Java 数据结构篇-二叉树的深度优先遍历(实现:递归方式、非递归方式)

    🔥博客主页: 【 小扳_-CSDN博客】 ❤感谢大家点赞👍收藏⭐评论✍    文章目录         1.0 二叉树的说明         1.1 二叉树的实现         2.0 二叉树的优先遍历说明         3.0 用递归方式实现二叉树遍历         3.1 用递归方式实现遍历 - 前序遍历         3.2 用递归

    2024年02月05日
    浏览(53)
  • java8里如何使用流?《Java8 实战》读书笔记 第 5 章 使用流

    [实践总结] java8 展平嵌套数组 [实践总结] java8 列表根据元素属性去重 [实践总结] String,int[],Integer[],List<Integer>互转 [实践总结] String,String[],List<String>互转 [实践总结] String,int,Integer互转 ✅ Further Reading : java8 数值流介绍 ✅ Further Reading : java8 构建流的5种方法

    2024年02月16日
    浏览(37)
  • java8新特性,java17新特性

    目前使用最多的jdk版本 相较jdk7主要不同在于 Lambda 表达式和函数式编程 : JDK 8 引入了 Lambda 表达式,使得函数式编程更加便捷。Lambda 表达式允许将函数作为参数传递给方法,以及在集合的操作中更简洁地进行数据处理。 新增的 java.util.function 包提供了函数式接口(如 Funct

    2024年02月11日
    浏览(41)
  • mac 切换java jdk版本 java8 java11

    1.   终端执行命令  查看本地各版本jdk:mac通常默认安装了jdk1.8 安装目录是 /Library/Java/JavaVirtualMachines/ cd /Library/Java/JavaVirtualMachines/ ls 2.   上述命令列出的各版本目录名 后,在全局配置文件.bash_profile中新增上面命令列出的各版本jdk,并指定当前环境变量默认的版本为jdk1.8

    2024年02月16日
    浏览(58)
  • 安装Java8和Java17共存,如何自由切换Java版本?

    官方下载地址:https://www.oracle.com/java/technologies/downloads/ 根据需要选择要下载的Java版本 安装过程省略,有需要的可自行百度 … 找到自己java安装的目录 进入Java jdk的bin目录,如:C:java8jdk1.8.0_331bin,将java.exe改为java8.exe 同样的方式去修改java17的java文件名称 将Java8和Java17的b

    2024年02月09日
    浏览(57)
  • Docker-基于java8构建java项目镜像

    需求:基于openjdk:8-jdk-alpine镜像,将一个java项目构建为镜像 实现步骤: 在linux系统检查有无openjdk:8-jdk-alpine镜像 如果没有,需要去镜像仓库拉取镜像,比如DockerHub 复制命令到linux系统控制台 运行成功 在linux系统新建一个空目录,然后在目录中新建一个文件,命令为Dockerfile,

    2024年02月05日
    浏览(46)
  • 用java实现二叉树的后序遍历(递归和迭代)

    目录 1.题目内容 2.用递归实现后序遍历 2.1解题思路 2.2代码 3.用迭代实现后序遍历 3.1解题思路 3.2代码 给你一棵二叉树的根节点 root ,返回其节点值的 后序遍历 。 示例 1: 输入:root = [1,null,2,3] 输出:[3,2,1] 示例 2: 输入:root = [] 输出:[] 示例 3: 输入:root = [1] 输出:[1]

    2024年02月08日
    浏览(58)
  • Mac环境配置(Java)(附Java8下载地址)

    目录  一、下载Java 1、官方地址: 2、网盘下载地址(Java8): 二、Java环境配置(以Java8配置为例,所有版本配置方法一样) 1、打开软件--终端 2、首先查看本机Java的安装地址(系统默认的) 3、查看到Java8安装的路径如下:  4、如果是第一次配置环境变量,使用命令:【t

    2024年02月04日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包