在日常开发中遇到数据量较大的时候,使用stream流可以提高效率。
以上是数据库中一部分分组数据
@RequestMapping("/list/tree")
public R list(){
List<CategoryEntity> categoryEntityList = categoryService.list(null);
List<Object> levelMenu = categoryEntityList.stream().filter(categoryEntity ->
categoryEntity.getParentCid() == 0
).map((menu) -> {
menu.setChildren(getChildren(menu,categoryEntityList));
return menu;
}).sorted((menu1,menu2)->{
return menu1.getSort() - menu2.getSort();
}).collect(Collectors.toList());
return R.ok().put("data", levelMenu);
}
private List<CategoryEntity> getChildren(CategoryEntity root,List<CategoryEntity> all){
return all.stream().filter(categoryEntity ->
categoryEntity.getParentCid() == root.getCatId()
).map((menu) -> {
menu.setChildren(getChildren(menu,all));
return menu;
}).sorted((menu1,menu2) -> {
return (menu1.getSort() == null ? 0 :menu1.getSort()) - (menu2.getSort() == null ? 0 :menu2.getSort());
}).collect(Collectors.toList());
}