数据库表结构
public class Pojo {
/**
* id
*/
private Integer id;
/**
* 上一级id
*/
private Integer baseId;
/**
* 名称
*/
private String name;
}
前端展示
public class Vo {
/**
* id
*/
private Integer id;
/**
* 上一级id
*/
private Integer baseId;
/**
* 名称
*/
private String name;
private List<Vo> list;
}
数据整理 代码纯手打 有错误自行更改
List<Pojo> pojoList = new ArrayList<>();
/*
pojoList.add...
*/
//创建一个temp list
List<Pojo> pojoTempList = new ArrayList<>(pojoList);
//保存每一级的
Map<Integer,List<Vo>> baseIdVoListMap = new HashMap<>();
while(pojoTempList .size()>0){
//创建一个temp list
List<Pojo> pojoTempList1 = new ArrayList<>(pojoTempList);
for(Pojo p : pojoTempList1){
// 查找当前 p 是否存在 子级 数据
long count = pojoTempList.stream().filter(t-> t.getBaseId().equals(p.getId()));
if(count<=0){
//数据类转换 自行查找
Vo vo =new Vo(p);
//获取 子级 数据
List<Vo> childList = baseIdVoListMap.getOrDefault(p.getId(), new ArrayList<>());
vo.setList(childList );
//获取 父级 数据
List<Vo> baseList = baseIdVoListMap.getOrDefault(p.getBaseId(),new ArrayList<>());
//添加到父级列表
baseList.add(vo);
//保存到map
baseIdVoListMap.put(p.getBaseId(),baseList);
//删除本条数据
pojoTempList.removeIf(t->t.getId().equals(p.getId()));
//删除子级数据
baseIdVoListMap.remove(p.getId());
}
}
}
//最终需要的数据
List<Vo> retList = baseIdVoListMap.values();