1、递归list显示菜单
将数据库查询得来的所有菜单项按照父子菜单层次进行划分
list原数据
{
"code": 200,
"msg": "处理成功",
"data": [
{
"id": 7,
"name": "删除用户",
"pid": 1,
"status": true,
"createDate": null,
"updateDate": null,
"children": []
},
{
"id": 1,
"name": "用户管理",
"pid": 0,
"status": true,
"createDate": null,
"updateDate": null,
"children": []
},
{
"id": 4,
"name": "查看用户",
"pid": 1,
"status": true,
"createDate": null,
"updateDate": null,
"children": []
},
{
"id": 5,
"name": "修改用户",
"pid": 1,
"status": true,
"createDate": null,
"updateDate": null,
"children": []
},
{
"id": 6,
"name": "添加用户",
"pid": 1,
"status": true,
"createDate": null,
"updateDate": null,
"children": []
},
{
"id": 16,
"name": "修改用户密码",
"pid": 5,
"status": true,
"createDate": null,
"updateDate": null,
"children": []
},
{
"id": 17,
"name": "修改用户密码密码密码",
"pid": 16,
"status": true,
"createDate": null,
"updateDate": null,
"children": []
}
]
}
Java代码
List<Menu> Pmenu = new ArrayList<Menu>();
//循环找所有一级菜单(pid=0)
for (int i = 0; i < menuList.size(); i++) {
if (menuList.get(i).getPid() == 0) {
Pmenu.add(menuList.get(i));
}
}
//遍历所有菜单项,将二级菜单添加进相应的一级菜单内
for (Menu menu : Pmenu) {
menu.setChildren(getChild(menu.getId(), menuList));
}
//返回所有菜单项
return Result.success(Pmenu);
}
public List<Menu> getChild(Integer pid, List<Menu> menulist) {
List<Menu> result = new ArrayList();
//遍历,将子菜单添加进父菜单项内
for (Menu menu : menulist) {
if (menu.getPid().equals(pid)) {
result.add(menu);
}
}
//继续遍历二级菜单是否有子菜单(递归)
for (Menu menu : result) {
menu.setChildren(getChild(menu.getId(), menulist));
}
//递归终止条件
if (result.size() == 0) {
return null;
}
return result; //返回结果集
}
Java 代码改进版
List<Menu> menuList = new ArrayList();
//```menuList为所有菜单项的集合```
```
```
return getChild(1,menuList);//返回结果list
//递归方法
public List<Menu> getChild(Integer pid, List<Menu> menulist) {
//pid为父级菜单id,MenuList为菜单项集合
List<Menu> result = new ArrayList();
for (Menu menu : menulist) {
if (menu.getPid()==pid) {
result.add(menu);
menu.setChildren(getChild(menu.getId(), menulist));
}
}
if (result.size() == 0) {
return null;
}
return result;
}
list结果
{
"code": 200,
"msg": "处理成功",
"data": [
{
"id": 1,
"name": "用户管理",
"pid": 0,
"status": true,
"createDate": null,
"updateDate": null,
"children": [
{
"id": 7,
"name": "删除用户",
"pid": 1,
"status": true,
"createDate": null,
"updateDate": null,
"children": []
},
{
"id": 4,
"name": "查看用户",
"pid": 1,
"status": true,
"createDate": null,
"updateDate": null,
"children": []
},
{
"id": 5,
"name": "修改用户",
"pid": 1,
"status": true,
"createDate": null,
"updateDate": null,
"children": [
{
"id": 16,
"name": "修改用户密码",
"pid": 5,
"status": true,
"createDate": null,
"updateDate": null,
"children": [
{
"id": 17,
"name": "修改用户密码密码密码",
"pid": 16,
"status": true,
"createDate": null,
"updateDate": null,
"children": []
}
]
}
]
},
{
"id": 6,
"name": "添加用户",
"pid": 1,
"status": true,
"createDate": null,
"updateDate": null,
"children": []
}
]
}
}