java 递归获取树形菜单
时间: 2023-08-13 22:02:38 浏览: 122
获取树形菜单是递归的一个典型应用场景。下面是一个 Java 递归获取树形菜单的示例代码:
```
public class Menu {
private Long id;
private String name;
private List<Menu> children;
// 构造方法、getter 和 setter 略
// 递归获取树形菜单
public static List<Menu> buildTree(List<Menu> menus, Long parentId) {
List<Menu> tree = new ArrayList<>();
for (Menu menu : menus) {
if (menu.getParentId().equals(parentId)) {
// 递归获取子菜单
List<Menu> children = buildTree(menus, menu.getId());
menu.setChildren(children);
tree.add(menu);
}
}
return tree;
}
}
```
在这个示例中,`Menu` 类表示菜单项,包含菜单项的 ID、名称和子菜单列表。`buildTree` 方法接受一个菜单列表和一个父菜单 ID,返回一个树形菜单列表。在方法中,我们遍历菜单列表,找到所有父菜单 ID 与传入的父菜单 ID 相等的菜单项,并递归调用 `buildTree` 方法来获取子菜单。我们将子菜单设置到父菜单的 `children` 属性中,并将父菜单添加到树形菜单列表中,最后返回树形菜单列表。
需要注意的是,递归获取树形菜单的效率受到菜单项数量和递归深度的影响,如果菜单项数量较大,递归深度较深,可能会导致性能问题。因此,在实际应用中,需要评估菜单项数量和递归深度,并进行必要的优化。
阅读全文