jdk新特性将List转为层级数据
@Override
public List<Entity> lTree() {
List<Entity> entities = baseMapper.selectList(null);
List<Entity> level1Menu = entities.stream().filter(Entity ->
Entity.getParentCid() == 0
).map((menu) -> {
menu.setChildren(getChildrens(menu,entities));
return menu;
}).sorted((menu1,menu2) ->{
return menu1.getSort()-menu2.getSort();
}).collect(Collectors.toList());
return level1Menu;
}
//查询菜单的所有子菜单
private List<Entity> getChildrens(Entity root,List<Entity> all){
List<Entity> collect = all.stream().filter(entity ->
entity.getParentCid() == root.getCatId()
).map((menu) -> {
menu.setChildren(getChildrens(menu, all));
return menu;
}).sorted((menu1, menu2) -> {
return (menu1.getSort()==null?0:menu1.getSort()) -(menu2.getSort()==null?0:menu2.getSort());
}).collect(Collectors.toList());
return collect;
}