Java树形菜单分类后端代码实现
@Override public List<CategoryEntity> listWithTree() { // 1、查出所有分类 设置为null查询全部 List<CategoryEntity> entities = baseMapper.selectList(null); // 2、组装成父子的树形结构 List<CategoryEntity> levelList = entities.stream().filter(categoryEntity -> { // parentCid ==0 为父目录默认0 return categoryEntity.getParentCid() == 0; }).map(menu -> { // 设置二三级分类 递归 menu.setChildren(getChildrens(menu,entities)); return menu; }).sorted((menu1, menu2) -> { // 排序 Sort字段排序 return (menu1.getSort() == null ? 0 : menu1.getSort()) - (menu2.getSort() == null ? 0 : menu2.getSort()); }).collect(Collectors.toList()); return levelList; } /** * 递归查询子分类 * @param root 当前category对象 * @param all 全部分类数据 * @return */ private List<CategoryEntity> getChildrens(CategoryEntity root, List<CategoryEntity> all) { List<CategoryEntity> collect = all.stream().filter(categoryEntity -> { // 遍历所有的category对象的父类id = 等于root的分类id 说明是他的子类 return categoryEntity.getParentCid() == root.getCatId(); }).map(menu -> { // 1、递归遍历菜单 menu.setChildren(getChildrens(menu, all)); return menu; }).sorted((menu1, menu2) -> { // 2、菜单排序 return (menu1.getSort() == null ? 0 : menu1.getSort()) - (menu2.getSort() == null ? 0 : menu2.getSort()); }).collect(Collectors.toList()); return collect; }