后台的通过sql得到一个List<Menu> 如何在后台把他变成树形结构的List<Menu>传到前台
时间: 2023-05-17 14:02:29 浏览: 84
您可以使用递归算法将List<Menu>转换为树形结构的List<Menu>。首先,您需要定义一个方法,该方法将List<Menu>作为参数,并返回树形结构的List<Menu>。在该方法中,您需要遍历List<Menu>,并将每个Menu对象添加到其父菜单下的子菜单列表中。如果该菜单没有父菜单,则将其添加到根菜单列表中。然后,您需要递归调用该方法,以便将所有子菜单转换为树形结构。最后,您需要返回根菜单列表。
以下是示例代码:
```
public List<Menu> convertToTree(List<Menu> menuList) {
List<Menu> rootMenuList = new ArrayList<>();
for (Menu menu : menuList) {
if (menu.getParentId() == null) {
rootMenuList.add(menu);
} else {
for (Menu parentMenu : menuList) {
if (parentMenu.getId().equals(menu.getParentId())) {
parentMenu.getChildren().add(menu);
break;
}
}
}
}
for (Menu rootMenu : rootMenuList) {
convertChildrenToTree(rootMenu.getChildren());
}
return rootMenuList;
}
private void convertChildrenToTree(List<Menu> children) {
for (Menu child : children) {
List<Menu> subChildren = new ArrayList<>();
for (Menu menu : children) {
if (menu.getParentId() != null && menu.getParentId().equals(child.getId())) {
subChildren.add(menu);
}
}
child.setChildren(subChildren);
convertChildrenToTree(subChildren);
}
}
```
您可以在后台调用此方法,将List<Menu>转换为树形结构的List<Menu>,然后将其传递到前台。
阅读全文