List 非递归组无限节点 树(Tree)

本文介绍了一种用于初始化项目树节点列表的方法,通过遍历项目实体列表并构建映射,实现根据根节点ID筛选出所有子节点,适用于系统项目管理模块中树形结构数据的初始化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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;

    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值