/**
* 完成三级分类
*/
@Override
public List<BzMenu> selectMenusByStream() {
// 1.查询所有菜单数据(包含一级 二级 三级)
List<BzMenu> menuList = this.list();
// 2.通过流处理menuList 将集合中三级封装到二级中 二级封装到一级中
// 2.1通过流获取所有的一级菜单 过滤操作
return menuList.stream()
.filter(bzMenu -> {
// return false 代表当前元素舍弃
return bzMenu.getParentId() == 0;
})
// 给一级菜单中封装二级数据
.map(bzMenu -> {
// 给一级菜单中封装二级数据
// 二级数据的特点 父id等于一级的id
bzMenu.setMenuList(selectMenuList(bzMenu.getMenuId(), menuList));
return bzMenu;
})
// 重新收集为菜单集合
.collect(Collectors.toList());
}
/**
* 根据参数1 去 参数2中获取它的下一级
*/
public List<BzMenu> selectMenuList(Long menuId,List<BzMenu> menuList){
return menuList.stream()
// 根据一级的id 获取二级数据
.filter(bzMenu -> bzMenu.getParentId() == menuId)
// 根据二级找三级
.map(bzMenu -> {
// 封装三级数据
bzMenu.setMenuList(selectMenuList(bzMenu.getMenuId(),menuList));
return bzMenu;
})
.collect(Collectors.toList());
}
使用Stream流 查询三级分类
最新推荐文章于 2023-07-06 17:17:25 发布