级联关系拆装箱
- 实体类
@Data
public class Cascade {
private String id;
private String pid;
private String name;
private List<Cascade> childs=new ArrayList<>();
}
- 示例数据【拆开的数据】
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":[]}]
- 级联数据组装
代码
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"}]
- 级联数据拆箱
代码
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"}]
总结: 工具化级联树形数据,合理使用递归操作