Java 通过递归实现菜单树形结构
public List<RespMenu> selectMenu() {
List<RespMenu> finalList = new ArrayList<>();
if (CollectionUtils.isNotEmpty(menuList)){
for (RespMenu menu : menuList) {
if(StringUtils.isBlank(menu.getParentId()) || menu.getMenuId().equals(menu.getParentId())){
finalList.add(menu);
}
}
menuList.removeAll(finalList);
for (RespMenu menu : finalList) {
menu.setChildren(getChild(menu.getMenuId(),menuList));
}
}
return finalList;
}
private List<RespMenu> getChild(String menuId,List<RespMenu> menuList){
List<RespMenu> childList = new ArrayList<>();
if (CollectionUtils.isNotEmpty(menuList)) {
for (RespMenu menu : menuList) {
if (StringUtils.isNotBlank(menu.getParentId())) {
if (menu.getParentId().equals(menuId)) {
childList.add(menu);
}
}
}
for (RespMenu menu : childList) {
menu.setChildren(getChild(menu.getMenuId(), menuList));
}
}
return childList;
}