递归查:

    @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 递归查子菜单的更多相关文章

  1. JAVA递归生成树形菜单

    递归生成一个如图的菜单,编写两个类数据模型Menu.和创建树形的MenuTree.通过以下过程实现: 1.首先从菜单数据中获取所有根节点. 2.为根节点建立次级子树并拼接上. 3.递归为子节点建立次级 ...

  2. Mybatis自查询递归查找子菜单

    之前写过 java从数据库读取菜单,递归生成菜单树 今天才发现mybatis也可以递归查询子菜单 先看一下数据库 主键id,名称name,父id,和url 设计菜单类 public class Men ...

  3. java从数据库读取菜单,递归生成菜单树

    首先看一下菜单的样子 根据这个样子我们定义菜单类 public class Menu { // 菜单id private String id; // 菜单名称 private String name; ...

  4. java递归、js递归,无限极分类菜单表

    java-json import com.alibaba.fastjson.JSONObject; import java.util.ArrayList; import java.util.List; ...

  5. PHP递归获得树形菜单和遍历文件夹下的所有文件以及子文件夹

    PHP递归获得树形菜单和遍历文件夹下的所有文件以及子文件夹 一.使用递归获取树形菜单 数据表category(id,name,parent_id) <?php class category{ / ...

  6. Java构建网站多级菜单功能解决方案

    在网站开发的时候我们会对网站的栏目进行分类,一个栏目可以有多个子分类,一个子分类又可以有分裂,例如:新闻栏目下有每日早报和每日晚报两个栏目,其中每日早报下面又分为上海早报,北京早报,杭州早报,下面是京 ...

  7. Java生成树关系的菜单

    1.菜单bean public class Menu { private String id; private String menuname; private String parentid; pr ...

  8. Android开发之Menu:OptionMenu(选项菜单)、ContextMenu(上下文菜单)、SubMenu(子菜单)

    菜单的概念,现在已经很普及了.Windows系统.Mac.桌面版Linux.Java Swing等,都有可视化菜单.一.Android平台3种菜单  选项菜单(OptionMenu).上下文菜单(Co ...

  9. 11.JAVA之GUI编程菜单

    功能:添加菜单组件 知识总结: 代码如下: import java.awt.FlowLayout; import java.awt.Frame; import java.awt.Menu; impor ...

  10. 安卓开发_浅谈SubMenu(子菜单)

    子菜单,即点击菜单后出现一个菜单栏供选择 创建子菜单的步骤: (1) 覆盖Activity的onCreateOptionsMenu()方法,调用Menu的addSubMenu()方法来添加子菜单 (2 ...

随机推荐

  1. 动态构造LINQ表达式导致EFCore内存泄漏

    EFCore版本 v3.1.4 上述代码模拟100次的Id包含查询,并且demoExpr1和demoExpr2使用两种方式构造LINQ表达式,第二种会导致内存泄漏. 使用第一种方法构造查询条件的值,结 ...

  2. 【Java学习Day05】LDEA的安装和使用

    LDEA安装 进入LDEA所有版本下载地址,建议下载LDEA2018 3.6版本 安装好LDEA后双击打开LDEA点击Nest,选择合适的文件路径,个人不建议放在C盘 选择好合适的文件路径后点击Nex ...

  3. Eclipse 获取maven项目出现问题汇总

    1.errors occurred during the build,可以试试加上下图的配置,路径根据自己jak安装路径去修改

  4. matlab读写文件操作

    文件相对路径 在编码中尽可能使用相对路径: 1.当前路径下,直接:' xxx.bin ' 2.在下一级路径下,使用:' .\下一级路径文件名\xxx.bin ' 3.在上一级路径下,使用:' ..\x ...

  5. CAD中相交线怎样打断?CAD打断相交线步骤

    在CAD设计过程中,如果想要打断图纸中相交线该如何操作呢?大家第一个想到的是不是CAD打断命令?没错,CAD打断命令是可以实现的,但是过于麻烦,今天小编来给大家分享一个更简单的方法,那就是浩辰CAD软 ...

  6. firefox用于web安全测试的插件[转]

    备份用 目录[-] firebug 油猴子Greasemonkey JavaScript Debugger flagfox tamper data live http headers modify h ...

  7. schemer校验器的简单应用

    from schemer import Schema def func(account, password): request_params = { 'account': account, 'pass ...

  8. C++future promise

    A future is an object that can retrieve a value from some provider object or function, properly sync ...

  9. Navie UI

    开发文档 一个 Vue 3 组件库, 它比较完整,主题可调,用 TypeScript 写的,快.

  10. centos7 系统初始化配置

    1.设置ip地址 [root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens192 PROXY_METHOD="none ...