public List<MenuEntity> getMenuList() {
List<MenuEntity> menuList = this.requestMapper.findAll();
List<MenuEntity> menu = new ArrayList<>();
HashMap<String, List<MenuEntity>> treeMap = new HashMap<>();
//循环从数据库中获取的所有菜单
for (MenuEntity menuEntity : menuList) {
//筛选出所有子菜单
if(menuEntity.getParentId() != null){
//如果map中没有父菜单id
if(!treeMap.containsKey(menuEntity.getParentId())){
//将父菜单id当成map中的key,并且value为nul集合
treeMap.put(menuEntity.getParentId(), new ArrayList<>());
}
//每次循环将按照parentid取值,再将当前parentid对应的实体放入map中value的位置
treeMap.get(menuEntity.getParentId()).add(menuEntity);
}
}
//循环从数据库中获取的所有菜单数据
for (MenuEntity menuEntity : menuList) {
//如果map中的parentid包含数据库中的菜单id
if(treeMap.containsKey(menuEntity.getId())){
List<MenuEntity> list = treeMap.get(menuEntity.getId());
menuEntity.setMenuList(list);
}
//将组合好的菜单放入新的集合中一并返回
if(menuEntity.getParentId() == null){
menu.add(menuEntity);
}
}
return menu;
}