递归省县市
public Result findNodes() {
List<GoodsType> listGoodsType = goodsTypeService.list();
List<GoodsType> result = listGoodsType.stream().filter(GoodsType -> GoodsType.getParentId() == 0)
.map(GoodsType -> {
GoodsType.setChildren(getmMltistage(GoodsType, listGoodsType));
return GoodsType;
}).collect(Collectors.toList());
return Result.ok(result);
}
private List<GoodsType> getmMltistage(GoodsType root , List<GoodsType> allList) {
List<GoodsType> collect = allList.stream().filter(e -> e.getParentId().equals(root.getId()))
.map(e -> {
e.setChildren(getmMltistage(e, allList));
return e;
}).collect(Collectors.toList());
return collect;
}
示例2
package com.lfweixiao;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class 测试 {
public static void main(String[] args) {
List<AList> d = getData();
ArrayList<AList> aaa = new ArrayList<>();
t001(d,aaa );
aaa.forEach(System.out::println);
}
static void t001( List<AList> a1,List<AList> a2){
a1.forEach( e-> {
if(e == null) return;
if( e.getA() != null) t001(e.getA() ,a2);
e.setA(null);
a2.add(e);
});
}
static String get(String str){
return str == null ? "1": "2";
}
static List<AList> getData(){
List<AList> a = new ArrayList<AList>();
a.add( new AList("1",
Arrays.asList(new AList("101"),new AList("102"),new AList("103"))
) );
a.add( new AList("2",
Arrays.asList(new AList("201"),new AList("202"),new AList("203",
Arrays.asList(new AList("20301"),new AList("20302"),new AList("20303"))
))
) );
return a;
}
}
class AList{
private String name;
private List<AList> a;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public List<AList> getA() {
return a;
}
public void setA(List<AList> a) {
this.a = a;
}
public AList(String name, List<AList> a) {
this.name = name;
this.a = a;
}
@Override
public String toString() {
return "AList{" +
"name='" + name + '\'' +
", a=" + a +
'}';
}
public AList() {
}
public AList(String name) {
this.name = name;
}
}