@Data
public class TypeTreeVO {
@ApiModelProperty(value = "编码")
private String code;
@ApiModelProperty(value = "名称")
private String name;
@ApiModelProperty(value = "父级编码")
private String parentCode;
@ApiModelProperty(value = "子集")
List<TypeTreeVO> childrens;
}
public static void main(String[] args) {
List<TypeTreeVO> list = new ArrayList<>();
TypeTreeVO v1 = new TypeTreeVO();
v1.setCode("1");
v1.setName("第一层");
v1.setParentCode("0");
TypeTreeVO v2 = new TypeTreeVO();
v2.setCode("2");
v2.setName("第二层");
v2.setParentCode("1");
TypeTreeVO v3 = new TypeTreeVO();
v3.setCode("3");
v3.setName("第三层");
v3.setParentCode("2");
list.add(v1);
list.add(v2);
list.add(v3);
TypeTreeVO v4 = new TypeTreeVO();
v4.setCode("4");
v4.setName("第一层");
v4.setParentCode("0");
list.add(v4);
Map<String, List<TypeTreeVO>> zoneByParentIdMap = list.stream().collect(Collectors.groupingBy(TypeTreeVO::getParentCode));
list.forEach(zone -> zone.setChildrens(zoneByParentIdMap.get(zone.getCode())));
List<TypeTreeVO> collect = list.stream().filter(v -> v.getParentCode().equals("0")).collect(Collectors.toList());
System.out.println(collect);
}