遞迴函式-樹形列表

成佛在西天發表於2024-03-11

基本思想

根據根節點沒有父節點原理找到父節點;

根據子節點的父id找到根節點所有的子節點;

遞迴遍歷父節點的所有子節點;

    private void recursionFn(List<SysDept> list, SysDept t)
    {
        // 得到子節點列表
        List<SysDept> childList = getChildList(list, t);
        t.setChildren(childList);
        for (SysDept tChild : childList)
        {
            if (hasChild(list, tChild))
            {
                recursionFn(list, tChild);
            }
        }
    }

private List<SysDept> getChildList(List<SysDept> list, SysDept t)
    {
        List<SysDept> tlist = new ArrayList<SysDept>();
        Iterator<SysDept> it = list.iterator();
        while (it.hasNext())
        {
            SysDept n = (SysDept) it.next();
            // 子節點的父id
            if (StringUtils.isNotNull(n.getParentId()) && n.getParentId().longValue() == t.getDeptId().longValue())
            {
                tlist.add(n);
            }
        }
        return tlist;
    }

相關文章