2021-09-18

级联关系拆装箱

  1. 实体类
@Data
public class Cascade {
    private String id;
    private String pid;
    private String name;
    private List<Cascade> childs=new ArrayList<>();
 }
  1. 示例数据【拆开的数据】
 static List<Cascade> items=new ArrayList<>();
    static  int num=0;
    public static void tree(String pid,List<Cascade> items){
        if(++num>10)return;
        Cascade item=new Cascade();
        String tpid=RandomUtil.randomNumbers(15);
        item.setId(tpid);
        item.setName(RandomUtil.randomNumbers(12));
        item.setPid(pid);
        items.add(item);
        tree(tpid,items);
    }

数据

[{"name":"597973669670","pid":"0000","id":"713489909317214","childs":[]},{"name":"224634724030","pid":"713489909317214","id":"711668664871853","childs":[]},{"name":"577948383869","pid":"711668664871853","id":"608975567776730","childs":[]},{"name":"511284575014","pid":"608975567776730","id":"373126151333316","childs":[]},{"name":"106496800537","pid":"373126151333316","id":"456902020553079","childs":[]},{"name":"483769794528","pid":"456902020553079","id":"692009591714350","childs":[]},{"name":"781812331783","pid":"692009591714350","id":"647072580932354","childs":[]},{"name":"902359998246","pid":"647072580932354","id":"194064043953153","childs":[]},{"name":"943263626238","pid":"194064043953153","id":"979714831378073","childs":[]},{"name":"574538501903","pid":"979714831378073","id":"588852069770979","childs":[]}]
  1. 级联数据组装

代码

    public static List<Cascade> item(String pid,List<Cascade> items){
        List<Cascade> childs=new ArrayList<>();
        items.forEach(e->{
            if(pid.equalsIgnoreCase(e.getPid())){
                    List<Cascade> child=item(e.getId(),items);
                    if(child.size()>0){
                        e.setChilds(child);
                    }
                    childs.add(e);
            }
        });
        return childs;
    }

数据

[{"childs":[{"childs":[{"childs":[{"childs":[{"childs":[{"childs":[{"childs":[{"childs":[{"childs":[{"childs":[],"id":"588852069770979","name":"574538501903","pid":"979714831378073"}],"id":"979714831378073","name":"943263626238","pid":"194064043953153"}],"id":"194064043953153","name":"902359998246","pid":"647072580932354"}],"id":"647072580932354","name":"781812331783","pid":"692009591714350"}],"id":"692009591714350","name":"483769794528","pid":"456902020553079"}],"id":"456902020553079","name":"106496800537","pid":"373126151333316"}],"id":"373126151333316","name":"511284575014","pid":"608975567776730"}],"id":"608975567776730","name":"577948383869","pid":"711668664871853"}],"id":"711668664871853","name":"224634724030","pid":"713489909317214"}],"id":"713489909317214","name":"597973669670","pid":"0000"}]
  1. 级联数据拆箱

代码

   public static List<Cascade> expose(List<Cascade> all){
        List<Cascade> caches=new ArrayList<>();
        all.forEach(a->{
            caches.addAll(exposed(a));
        });
        return caches;
    }
    public static List<Cascade> exposed(Cascade item){
        List<Cascade> all=new ArrayList<>();
        List<Cascade> t=item.getChilds();
        item.setChilds(new ArrayList<>());
        all.add(item);
        if(t.size()>0){
            t.forEach(e->{
                all.addAll(exposed(e));
            });
        }
        return all;
    }

结果

[{"childs":[],"id":"713489909317214","name":"597973669670","pid":"0000"},{"childs":[],"id":"711668664871853","name":"224634724030","pid":"713489909317214"},{"childs":[],"id":"608975567776730","name":"577948383869","pid":"711668664871853"},{"childs":[],"id":"373126151333316","name":"511284575014","pid":"608975567776730"},{"childs":[],"id":"456902020553079","name":"106496800537","pid":"373126151333316"},{"childs":[],"id":"692009591714350","name":"483769794528","pid":"456902020553079"},{"childs":[],"id":"647072580932354","name":"781812331783","pid":"692009591714350"},{"childs":[],"id":"194064043953153","name":"902359998246","pid":"647072580932354"},{"childs":[],"id":"979714831378073","name":"943263626238","pid":"194064043953153"},{"childs":[],"id":"588852069770979","name":"574538501903","pid":"979714831378073"}]

总结: 工具化级联树形数据,合理使用递归操作

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值