java 递归查子菜单
递归查:
@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 递归查子菜单的更多相关文章
- JAVA递归生成树形菜单
递归生成一个如图的菜单,编写两个类数据模型Menu.和创建树形的MenuTree.通过以下过程实现: 1.首先从菜单数据中获取所有根节点. 2.为根节点建立次级子树并拼接上. 3.递归为子节点建立次级 ...
- Mybatis自查询递归查找子菜单
之前写过 java从数据库读取菜单,递归生成菜单树 今天才发现mybatis也可以递归查询子菜单 先看一下数据库 主键id,名称name,父id,和url 设计菜单类 public class Men ...
- java从数据库读取菜单,递归生成菜单树
首先看一下菜单的样子 根据这个样子我们定义菜单类 public class Menu { // 菜单id private String id; // 菜单名称 private String name; ...
- java递归、js递归,无限极分类菜单表
java-json import com.alibaba.fastjson.JSONObject; import java.util.ArrayList; import java.util.List; ...
- PHP递归获得树形菜单和遍历文件夹下的所有文件以及子文件夹
PHP递归获得树形菜单和遍历文件夹下的所有文件以及子文件夹 一.使用递归获取树形菜单 数据表category(id,name,parent_id) <?php class category{ / ...
- Java构建网站多级菜单功能解决方案
在网站开发的时候我们会对网站的栏目进行分类,一个栏目可以有多个子分类,一个子分类又可以有分裂,例如:新闻栏目下有每日早报和每日晚报两个栏目,其中每日早报下面又分为上海早报,北京早报,杭州早报,下面是京 ...
- Java生成树关系的菜单
1.菜单bean public class Menu { private String id; private String menuname; private String parentid; pr ...
- Android开发之Menu:OptionMenu(选项菜单)、ContextMenu(上下文菜单)、SubMenu(子菜单)
菜单的概念,现在已经很普及了.Windows系统.Mac.桌面版Linux.Java Swing等,都有可视化菜单.一.Android平台3种菜单 选项菜单(OptionMenu).上下文菜单(Co ...
- 11.JAVA之GUI编程菜单
功能:添加菜单组件 知识总结: 代码如下: import java.awt.FlowLayout; import java.awt.Frame; import java.awt.Menu; impor ...
- 安卓开发_浅谈SubMenu(子菜单)
子菜单,即点击菜单后出现一个菜单栏供选择 创建子菜单的步骤: (1) 覆盖Activity的onCreateOptionsMenu()方法,调用Menu的addSubMenu()方法来添加子菜单 (2 ...
随机推荐
- spring mvc @Configuration addConverterFactory 无效问题
spring 版本: 4.3.7 addFormatters(FormatterRegistry registry) 不生效 <!-- 此处与 @EnableWebmvc 冲突, 配置此处后 E ...
- 使用MVC编程模型通过flask蓝图实现前端后台新闻发布系统
相关知识点: flask:是Python开发轻量级框架,也能很好的开发动态网站. 蓝图:flask中蓝图能很好的实现代码分割管理,从而不使代码全部放在app.py杂乱无章,蓝图就像动物管理员一样,把猫 ...
- C++内存泄漏——原因、避免以及定位
https://bbs.huaweicloud.com/blogs/351858
- SQL逻辑查询语句执行顺序—练习题
在做练习题之前要重点熟悉select 的执行顺序 1.SELECT语句关键字的定义顺序 SELECT DISTINCT <select_list> FROM <left_table& ...
- Intel oneAPI 环境变量设置
因工作需要,需要在linux系统配置多个不同环境的库,需要使用environment-modules工具管理环境变量,为保持配置方法的一致性,也使用modulefile文件加载Intel oneAPI ...
- ERA5气压层数据驱动WRF的一些问题
感谢Dawn的建议,兰溪之水的WRF教程 参考了一些经验,并结合实际后,成功用ERA5驱动WRF.实际上,用ERA5数据驱动WRF的方法和用ERA-Interim 数据驱动WRF极其类似. 总结几点是 ...
- git将自己分支上忽略已修改但不需要的提交的文件
一:在idea上把需要提交的文件勾选上提交 二:git stash命令将余下被修改的文件存入(隐藏)暂存区 git stash 三:切换master分支合并上述分支 四:合并后再返回上述分支,git ...
- Docker的资源限制
CPU CGROUP MEM CGROUP Storage 默认的overlay fs不支持配额,需要底层文件系统如xfs,ext4的支持. 在docker中启用示例如下,限制单个容器最大使用空间为2 ...
- 常见的SPA首屏优化方式
核心是加载和解析的性能优化 加载优化的核心是资源体积和首屏资源数量. 解析优化的核心是资源体积和代码的执行性能. 加载优化 通过webpack 的code splitting合理分包: Code ...
- Linux进程调度算法
进程的状态 进程的基本状态 就绪:进程已获得除处理机以外的所需资源,等待分配处理机资源 执行:进程正在占用处理机资源执行 阻塞:进程等待某种条件,在条件满足之前无法执行.例如发起I/O系统调用,等待I ...