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。
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
java 中HashMap、HashSet、TreeMap、TreeSet判断元素相同的几种方法比较
这篇文章主要介绍了从源码的角度浅析HashMap、TreeMap元素的存储和获取元素的逻辑;从Map与Set之间的关系浅析常用的Set中元素的存储和判断是否重复的逻辑,需要的朋友可以参考下2017-01-01
Springcloud RestTemplate服务调用代码实例
这篇文章主要介绍了Springcloud RestTemplate服务调用代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下2020-08-08
SpringBoot的配置文件application.yml及加载顺序详解
这篇文章主要介绍了SpringBoot的配置文件application.yml及加载顺序,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2023-07-07


最新评论