java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > Java递归以及根据节点取子集合

Java递归以及根据节点取子集合方式

作者: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。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文