java递归查询菜单
时间: 2023-03-05 11:57:29 浏览: 89
假设您有一个包含菜单项的树形结构,其中每个菜单项都可以有多个子菜单。您可以使用递归函数来遍历整个树形结构,并查找特定的菜单项。以下是一个Java递归函数示例,可以实现此功能:
```java
public class Menu {
private String name;
private List<Menu> subMenus;
public Menu(String name) {
this.name = name;
this.subMenus = new ArrayList<>();
}
public String getName() {
return name;
}
public void addSubMenu(Menu menu) {
subMenus.add(menu);
}
public List<Menu> getSubMenus() {
return subMenus;
}
// 递归查找菜单项
public Menu findMenu(String name) {
if (this.name.equals(name)) {
return this;
}
for (Menu menu : subMenus) {
Menu found = menu.findMenu(name);
if (found != null) {
return found;
}
}
return null;
}
}
```
在这个示例中,`Menu`类表示一个菜单项,其中包含菜单的名称和子菜单的列表。`findMenu`方法是递归函数,它接受一个菜单项名称作为参数,并从当前菜单项开始查找。如果找到了指定的菜单项,则返回该菜单项。否则,递归遍历子菜单列表,并在子菜单中查找指定的菜单项。
以下是一个使用示例:
```java
Menu rootMenu = new Menu("Root Menu");
Menu subMenu1 = new Menu("Sub Menu 1");
Menu subMenu2 = new Menu("Sub Menu 2");
Menu subSubMenu1 = new Menu("Sub-Sub Menu 1");
rootMenu.addSubMenu(subMenu1);
rootMenu.addSubMenu(subMenu2);
subMenu1.addSubMenu(subSubMenu1);
Menu found = rootMenu.findMenu("Sub-Sub Menu 1");
System.out.println(found.getName()); // 输出 "Sub-Sub Menu 1"
```
在这个示例中,我们创建了一个包含两个子菜单的根菜单,并在第一个子菜单中添加了一个子子菜单。然后,我们使用`findMenu`方法查找名为“Sub-Sub Menu 1”的菜单项,并输出其名称。