当前位置: 代码迷 >> 综合 >> java递归查询菜单层级
  详细解决方案

java递归查询菜单层级

热度:56   发布时间:2024-01-25 08:23:03.0

说到菜单,大家都知道父菜单下面有子菜单,子菜单下面还有子菜单,那么如何实现这个递归获取菜单呢? 

public List<ClassificationVo> findAllClassification() {//查询所有菜单List<ClassificationVo> dataList = classificationDao.findAllClassification();if (CollectionUtils.isEmpty(classificationDOList)) {return Collections.EMPTY_LIST;}// 获取顶层listList<ClassificationVo> top = dataList.stream().filter(classificationDO1 -> classificationDO1.getPid().intValue() == 0).collect(Collectors.toList());//根据pid分组Map<Integer, List<ClassificationVo>> map = dataList.stream().collect(Collectors.groupingBy(ClassificationVo::getPid));//查询菜单层级List<ClassificationVo> classificationVos = treeCategoryData(top, map);return classificationVos;}public List<ClassificationVo> treeCategoryData(List<ClassificationVo> top, Map<Integer, List<ClassificationVo>> allMap) {//遍历top.forEach(category -> {List<ClassificationVo> temp = allMap.get(category.getValue());if (temp != null && !temp.isEmpty()) {category.setChildren(temp);treeCategoryData(category.getChildren(), allMap);} else {category.setChildren(null);}});return top;}