首页 > 编程语言 >java 递归查子菜单

java 递归查子菜单

时间:2023-11-19 11:32:35浏览次数:42  
标签:菜单 java BigDecimal Collectors List childList InternalPaymentVO new 查子

 

递归查:

@Override
    public List<PromotionOrgInfoPO> queryOrgInfo() {
        List<PromotionOrgInfoPO> promotionOrgInfoPOS = pointExchangeDAO.queryOrgInfo();
        List<PromotionOrgInfoPO> rootInfo = new ArrayList<>();
        if (CollectionUtils.isNotEmpty(promotionOrgInfoPOS)) {
            promotionOrgInfoPOS.forEach(promotionOrgInfoPO -> {
                if (Objects.isNull(promotionOrgInfoPO.getParentId())) {
                    rootInfo.add(promotionOrgInfoPO);
                }
            });
            rootInfo.forEach(menu -> {
                List<PromotionOrgInfoPO> childList = getChildMenu(menu.getId(), promotionOrgInfoPOS);
                menu.setChildOrgInfos(childList);
            });
        }
        return rootInfo;
    }

    private List<PromotionOrgInfoPO> getChildMenu(Long id, List<PromotionOrgInfoPO> allMenu) {
        //子菜单
        List<PromotionOrgInfoPO> childList = new ArrayList<>();
        allMenu.forEach(all -> {
            // 遍历所有节点,将所有的父id与传过来的根节点的id比较
            if (all.getParentId().equals(id)) {
                childList.add(all);
            }
        });
        //递归
        childList.forEach(child -> child.setChildOrgInfos(getChildMenu(child.getId(), allMenu)));
        //如果节点下没有子节点,返回一个空List(递归退出)
        if (childList.size() == 0) {
            return new ArrayList<>();
        }
        return childList;
    }

 

 

常用求和:

Map<String, BigDecimal> currencyCard = paymentVOS.stream().distinct().collect(Collectors.groupingBy(InternalPaymentVO::getDeductCardNo,
                        Collectors.mapping(InternalPaymentVO::getDeductAmount,
                                Collectors.reducing(BigDecimal.ZERO, BigDecimal::add))));
int points = internalPaymentVOS.stream().filter(v -> v.getType().equals(92)).mapToInt(InternalPaymentVO::getPmUsedPoints).sum();
     
                BigDecimal pointsMoney = internalPaymentVOS.stream().filter(v -> v.getType().equals(92)).map(InternalPaymentVO::getPmUsedMoney).reduce(BigDecimal.ZERO, BigDecimal::add);
                paymentVOS = internalPaymentVOS.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(InternalPaymentVO::getType))), ArrayList::new));

 

标签:菜单,java,BigDecimal,Collectors,List,childList,InternalPaymentVO,new,查子
From: https://blog.51cto.com/u_16253752/8471105

相关文章

  • 使用Swagger,在编写配置类时报错Caused by: java.lang.NullPointerException: Cannot i
    1.问题Causedby:java.lang.NullPointerException:Cannotinvoke"org.springframework.web.servlet.mvc.condition.PatternsRequestCondition.getPatterns()"because"this.condition"isnull2.解决参考链接:解决Cannotinvoke"org.springframework......
  • java反序列化----CC4利用链学习笔记
    java反序列化----CC4利用链学习笔记目录java反序列化----CC4利用链学习笔记环境配置利用链环境配置jdk8upom.xml中写入<dependency><groupId>org.apache.commons</groupId><artifactId>commons-collections4</artifactId><ve......
  • 【教3妹学编程-java基础6】详解父子类变量、代码块、构造函数执行顺序
    -----------------第二天------------------------本文先论述父子类变量、代码块、构造函数执行顺序的结论,然后通过举例论证,接着再扩展,彻底搞懂静态代码块、动态代码块、构造函数、父子类、类加载机制等知识体系。温故而知新,建议点赞收藏~ 1先说结论 面试官:好的,你说一下java中父......
  • 捕鱼达人 java实现
    开始页面运行页面......
  • 用java制作
    serverpackagechat;importjava.io.DataInputStream;importjava.io.DataOutputStream;importjava.io.EOFException;importjava.io.IOException;importjava.net.BindException;importjava.net.ServerSocket;importjava.net.Socket;importjava.net.SocketException;im......
  • 请查收这份 6.3k star的 Java 攻城狮学习指南!
    大家好,我是Java陈序员。自从一入Java开发的坑,可谓是每天过得神清气爽(水深火热)。每天不是被项目经理赶进度,就是被测试小姐姐追着改Bug!都没有时间好好学习(摸鱼)了!今天给大家介绍一份Java学习指南,无论是新手还是老鸟,皆可食用!新手可以用来学习找工作,老鸟可以用来跳槽面试复习......
  • java集合
    java集合2023.11.5集合可以动态的保存任意多个对象提供一系列的操作对象方法使用集合添加,删除新元素,简洁集合的框架体系图Iterator对象称为迭代器,主要用于遍历Collection集合中的元素所有实现了Collection接口的的集合类都有一个iterator()方法,用以返回......
  • 菜单点菜2-5次以及期中考试分析-21207310姜昊
    本次分析菜单2-4,以及期中考试题目,总体来说题目有一定难度,但仍可完成,主要从菜单1过度到2,3时要确定好方向,否则会产生一些无法解决的问题7-4菜单计价程序-2分数:38输入样例:在这里给出一组输入。例如:麻婆豆腐12油淋生菜91麻婆豆腐222油淋生菜13end输出样例:在这......
  • Java开发者的Python快速进修指南:控制之if-else和循环技巧
    简单介绍在我们今天的学习中,让我们简要了解一下Python的控制流程。考虑到我们作为有着丰富Java开发经验的程序员,我们将跳过一些基础概念,如变量和数据类型。如果遇到不熟悉的内容,可以随时查阅文档。但在编写程序或逻辑时,if-else判断和循环操作无疑是我们经常使用的基本结构。毕竟,......
  • Java秋招学习路线
    Java秋招学习路线前期:JVM+JUC+Redis+Mysql+项目(实际的项目或者网上找的项目)+力扣面试笔刷100题后期:边投简历边看八股MySql:MySql45讲链接:https://pan.baidu.com/s/1IEViw6E9SWmtgpot8Cdeug提取码:hsqf--来自百度网盘超级会员V6的分享Redis:黑马点评,可以当做简历里的一个项......