TreeUtil---生成樹狀結構數據


/**
 * @description:
 * @author: qiuqingxin
 * @create: 2020-08-04 13:49
 **/
public class TreeNodeUtil {
    public static List<BsOrganizationVo> tree;



    /**
     * 獲取根節點
     * @return
     */
    private static List<BsOrganizationVo> getRootNode(){
        List<Long> orgIds = tree.stream().map(BsOrganizationVo::getOrgId).collect(Collectors.toList());
        List<BsOrganizationVo> rootNode=new ArrayList<>();
        for (BsOrganizationVo bsOrganizationVo : tree) {
            //上級為null或者Pid不存在orgId集合中為根節點
            if (null==bsOrganizationVo.getParentId()||!orgIds.contains(bsOrganizationVo.getParentId())){
                rootNode.add(bsOrganizationVo);
            }
        }
        return rootNode;
    }
    private static void getChildren(BsOrganizationVo bsOrganizationVo){
        List<BsOrganizationVo> childNodesA = getChildNodesA(bsOrganizationVo);
        if (!childNodesA.isEmpty()){
            for (BsOrganizationVo organizationVo : childNodesA) {
                getChildren(organizationVo);
            }
            bsOrganizationVo.setChildren(childNodesA);
        }

    }
    private static List<BsOrganizationVo> getChildNodesA(BsOrganizationVo bsOrganizationVo){
        List<BsOrganizationVo> childNodesA=new ArrayList<>();
        for (BsOrganizationVo organizationVo : tree) {
            if (bsOrganizationVo.getOrgId().equals(organizationVo.getParentId())){
                childNodesA.add(organizationVo);
            }
        }
        return childNodesA;
    }
    public static void  setTree(List<BsOrganizationVo> lists){
        if (tree.isEmpty()){
            return;
        }
        //1.獲取根節點
        List<BsOrganizationVo> rootNode=getRootNode();
        for (BsOrganizationVo bsOrganizationVo : rootNode) {
            getChildren(bsOrganizationVo);
            lists.add(bsOrganizationVo);
        }
        //遍歷根節點
        //遞歸查詢每一個根節點的子節點
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM