Java树形结构递归查询

思路:
先找到所有的根节点,再通过循环遍历所有的根节点,找到每个跟节点的子节点,最终形成一个树形结构

    /**
     * 构建树形结构数据new
     * @param org
     * @return
     */
    public List<OrgEntity> builTree(OrgEntity org){
        List<OrgEntity> treeMenus =new ArrayList<>();
		// 查询所有数据
        List<OrgEntity> reList = this.queryListByOrg(org);
		// 获取根节点数据
        List<OrgEntity> rootList = this.getRootNode(reList);
        for(OrgEntity node : rootList){
		    // 为根节点数据递归添加字点数据
            node=buildChilTree(node,reList);
            treeMenus.add(node);
        }
        return treeMenus;
    }
    /**
     * 获取根节点new
     * @param list
     * @return
     */
    public List<OrgEntity> getRootNode(List<OrgEntity> list){
        List<OrgEntity> rootMenuLists =new ArrayList
		// 遍历list,获取根节点数据
        for(OrgEntity menuNode : list) {
            boolean isExit = false;
            for(OrgEntity node : list){
                if(menuNode.getParentId() != null && menuNode.getParentId().equals(node.getId())){
                    isExit = true;
                    break;
                }
            }
			// 如果遍历该数据没有上级节点,就放到根节点list中,否则就不放
            if(!isExit){
                rootMenuLists.add(menuNode);
            }
        }
        return rootMenuLists;
    }
    //递归,建立子树形结构new
    public OrgEntity buildChilTree(OrgEntity pNode,List<OrgEntity> list){
        List<OrgEntity> chilMenus =new  ArrayList<>();
        for(OrgEntity menuNode : list) {
            if(menuNode.getParentId().equals(pNode.getId())) {
                chilMenus.add(buildChilTree(menuNode,list));
            }
        }
        pNode.setChildren(chilMenus);
        return pNode;
    }

你可能感兴趣的:(笔记,java,开发语言)