Java Tree Structure implementation

1. Define a table, it must has id, and pid( parentID) it is used to build parent and children relationships.

for example:

2. create a java api for treelist

   public List<BimQuotationVO> getTreeList(String id) {
        LambdaQueryWrapper<BimQuotation> queryWrapper = new QueryWrapper<BimQuotation>().lambda();
        queryWrapper.eq(BimQuotation::getIsDelete, false);
//                             .eq(StringUtils.isNotBlank(id), BimQuotation::getPid, id)
//                .and(StringUtils.isBlank(id), wrapper-> wrapper.isNull(BimQuotation::getPid).or().eq(BimQuotation::getPid, ""))

        if (StringUtils.isNotBlank(id)) {
            queryWrapper.eq(StringUtils.isNotBlank(id), BimQuotation::getPid, id)
                    .eq(BimQuotation::getIsDelete, false);
        }

        List<BimQuotation> quotations = getBaseMapper().selectList(queryWrapper);


        List<BimQuotationVO> quotationVOList = quotations.stream().map(quotation -> this.transform(quotation)).collect(Collectors.toList());
        // retrieve parent node
        return quotationVOList.stream().filter(q -> StringUtils.isBlank(q.getPid())).map(m -> {
            m.setChildren(getChildrenList(m, quotationVOList));
            return m;
        }).collect(Collectors.toList());
    }

3. the recursive function: getChildrenList as below:

private List<BimQuotationVO> getChildrenList(BimQuotationVO root, List<BimQuotationVO> quotationVOList) {
        return quotationVOList.stream().filter(m -> Objects.equals(m.getPid(), root.getId())).map(m -> {
            m.setChildren(getChildrenList(m, quotationVOList));
            return m;
        }).collect(Collectors.toList());

    }

in the front end as bewlow results

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值