帮我完成mapMenuListToTree函数,输入MenuItem[],输出MenuTree[]
时间: 2024-01-08 14:02:52 浏览: 96
js中List、Tree互相转换
很高兴能够帮助您完成mapMenuListToTree函数,以下是函数的实现代码:
```java
public List<MenuTree> mapMenuListToTree(MenuItem[] menuItems) {
Map<Integer, MenuTree> menuTreeMap = new HashMap<>();
List<MenuTree> menuTreeList = new ArrayList<>();
for (int i = 0; i < menuItems.length; i++) {
MenuItem menuItem = menuItems[i];
int menuId = menuItem.getMenuId();
MenuTree menuTree = new MenuTree();
menuTree.setMenuId(menuId);
menuTree.setMenuName(menuItem.getMenuName());
if (menuItem.getParentMenuId() == null) {
menuTreeList.add(menuTree);
} else {
MenuTree parentMenuTree = menuTreeMap.get(menuItem.getParentMenuId());
if (parentMenuTree == null) {
parentMenuTree = new MenuTree();
parentMenuTree.setMenuId(menuItem.getParentMenuId());
menuTreeMap.put(menuItem.getParentMenuId(), parentMenuTree);
}
parentMenuTree.addChildMenu(menuTree);
}
menuTreeMap.put(menuId, menuTree);
}
return menuTreeList;
}
```
该函数将MenuItem数组映射为MenuTree列表,其中MenuTree是一个包含菜单ID、菜单名称和子菜单列表的对象。实现方式是通过Map将菜单ID和对应的MenuTree对象进行映射,然后遍历MenuItem数组,对于每一个菜单项,分别进行以下操作:
1. 创建一个MenuTree对象,设置菜单ID和菜单名称。
2. 如果当前菜单项的父菜单ID为null,则将该MenuTree对象添加至MenuTree列表中。
3. 如果当前菜单项的父菜单ID不为null,则从菜单ID和对应的MenuTree对象的Map中获取其父菜单的MenuTree对象,如果不存在则创建一个新的MenuTree对象加入Map中,然后将当前MenuTree对象添加至父菜单的子菜单列表中。
4. 将菜单ID和对应的MenuTree对象存入Map中,以备后续查找父菜单使用。
最后,将MenuTree列表返回即可。
希望以上代码能够帮助到您,如有任何问题,请随时提出。
阅读全文