java中全集List<SysMenu> menu, 其中SysMenu有menuId和父菜单parentId , 写一个方法查出 指定menuId下面的所有子菜单menuId
时间: 2024-12-14 17:26:07 浏览: 4
在Java中,如果你有一个`List<SysMenu>`类型的列表`menu`,其中每个`SysMenu`对象包含`menuId`和`parentId`字段,你可以编写一个方法来查找指定`menuId`下的所有子菜单。假设`SysMenu`类有一个表示是否为子菜单的布尔属性,如`isSubmenu`,你可以这样做:
```java
public List<Long> getDescendantMenuIds(List<SysMenu> menu, Long parentId) {
List<Long> descendantIds = new ArrayList<>();
for (SysMenu item : menu) {
if (item.getMenuId().equals(parentId) && item.isSubmenu) { // 如果找到匹配的父ID
descendantIds.add(item.getMenuId()); // 添加子菜单ID
descendantIds.addAll(getDescendantMenuIds(menu, item.getMenuId())); // 递归查找子菜单的子菜单
}
}
return descendantIds;
}
```
这个方法首先检查每个菜单项是否是目标父ID的子菜单,如果是,则将其ID添加到结果列表,并对它的子菜单进行递归搜索。递归会在遇到新的子菜单时继续调用自身,直到没有任何更多的子菜单为止。
阅读全文