List 非遞歸組無限節點 樹(Tree)

public static List<SysProjectEntity> initTreeNodeList(List<SysProjectEntity> list,Long root){

        if(list.size() <= 0){
            return null;
        }
        Map<Long,SysProjectEntity> map = getTreeMap(list,root);
        if(map.size() == 0){
            return null;
        }
        List<SysProjectEntity> roots = new ArrayList<>();
        Iterator<SysProjectEntity> iter = map.values().iterator();

        SysProjectEntity treeNode = null;
        while(iter.hasNext()){
            treeNode = iter.next();
            if(treeNode.getParentId() == 0 ||treeNode.getParentId().equals(root)){
                roots.add(treeNode);

            }
        }
        return roots;
    }

    private static Map<Long,SysProjectEntity> getTreeMap(List<SysProjectEntity > list,Long root){
        Long aLong = new Long(1);
        Map<Long,SysProjectEntity> map = new HashMap<Long, SysProjectEntity>();

        list.forEach(o->map.put(o.getId(),o));

        Iterator<SysProjectEntity> iter = map.values().iterator();

        while(iter.hasNext()){
            SysProjectEntity node = iter.next();
            if(node.getParentId() == 0||node.getParentId().equals(root)){
                continue;
            }
            SysProjectEntity parentNode = map.get(node.getParentId());
            if(!StringUtils.isEmpty(parentNode)){
                if(aLong.compareTo(node.getType())==0)parentNode.getChildren().add(node);
                else parentNode.getChilds().add(node);
            }
        }

        return map;

    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章