public List<Menu> listData(Menu menu) {
//所有分类数据
List<Menu> list = this.menuService.findList(menu);
// 2. 找出所有一级分类
// 在映射到每个一级分类 添加它的子分类类
List<Menu> collect = list.stream()
.filter(o -> o.getParentCode().equals("0"))
// 给每个一级分类加子分类
.peek(o -> o.setChildList(getChildList(o, list)))
.collect(Collectors.toList());
return collect.get(0).getChildList();
}
// 根据当前分类 找出子类, 并通过递归找出子类的子类
private List<Menu> getChildList(Menu currMenu, List<Menu> allList) {
return allList.stream().filter(o -> o.getParentCode().equals(currMenu.getId()))
.peek(o -> o.setChildList(getChildList(o, allList)))
.collect(Collectors.toList());
}
递归组装树形结构
该文章介绍了如何使用Java编程实现一个方法,通过调用menuService接口获取所有分类数据,然后筛选出一级分类并递归获取其子分类,最终返回指定一级分类的子菜单列表。
摘要由CSDN通过智能技术生成