java中已知有树形结构递归返回的结果labelId是id,pid是父id,pid是null是顶级菜单那么怎么根据labelId查询并返回labelId,多个labelId用,隔开(递归子集的labelId也要返回)
时间: 2024-02-18 10:59:18 浏览: 86
递归形成树形结构.txt
可以使用递归的方式来实现该功能,具体实现步骤如下:
1. 定义一个方法,输入参数为labelId和树形结构的列表,输出参数为labelId的字符串,表示递归查询到的所有labelId。
2. 在方法中,首先定义一个StringBuilder对象,用于拼接查询到的所有labelId。
3. 然后遍历树形结构的列表,找到所有父节点为labelId的子节点,并将子节点的labelId加入到StringBuilder对象中。
4. 对于每个子节点,如果其还有子节点,则递归调用该方法,并将返回的labelId字符串加入到StringBuilder对象中。
5. 最后将StringBuilder对象转换成字符串,并返回。
代码示例:
```java
public String getLabelIds(String labelId, List<TreeNode> treeList) {
StringBuilder sb = new StringBuilder();
for (TreeNode node : treeList) {
if (labelId.equals(node.getPid())) {
sb.append(node.getLabelId()).append(",");
if (node.getChildren() != null && node.getChildren().size() > 0) {
sb.append(getLabelIds(node.getLabelId(), node.getChildren()));
}
}
}
if (sb.length() > 0) {
sb.deleteCharAt(sb.length() - 1);
}
return sb.toString();
}
```
其中,TreeNode表示树形结构中的节点,包含labelId、pid、children等属性。
阅读全文