已知一组数据id,parentId,组装成tree树。

public static void main(String[] args) {
    List<Concept> concepts = new ArrayList<>();
    concepts.add(new Concept(0, 0, "顶级"));
    concepts.add(new Concept(1, 0, "顶级1"));
    concepts.add(new Concept(2, 1, "第一级1"));
    concepts.add(new Concept(3, 1, "第一级2"));
    concepts.add(new Concept(4, 2, "第二级1"));
    concepts.add(new Concept(5, 2, "第二级2"));
    concepts.add(new Concept(6, 4, "第三级1"));
    concepts.add(new Concept(7, 4, "第三级2"));
    concepts.add(new Concept(8, 6, "第四级1"));
    Concept root = buildTree(concepts, 0);
    System.out.println(root);
}
public static Concept buildTree(List<Concept> concepts, int rootId) {
    Map<Integer, Concept> conceptMap = new HashMap<>();
    for (Concept concept : concepts) {
        conceptMap.put(concept.id, concept);
    }
    Concept root = conceptMap.get(rootId);
    for (Concept concept : concepts) {
        if (concept.parentId != concept.id) { // Avoid self-parenting
            Concept parent = conceptMap.get(concept.parentId);
            if (parent != null) {
                parent.children.add(concept);
            }
        }
    }
    return root;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值