我需要在特定节点之后返回所有子项的列表。这是我所做的-
public List<Object> getChildrenTree(Object currentObject, List<Object> returnList){
//get all child-URIs for the category
List<Object> objectChildren = currentObject.getChildren();
for (Obj childObj : objectChildren) {
if(childObj !=null){
if(childObj.getChildren().size() >0){
getChildrenTree(childObj,returnList);
}else{
returnList.add(childObj);
}
}
}
return returnList;
}
但它不起作用,并且不能正确添加所有子项。
最佳答案
您没有添加有孩子的孩子。
您需要将循环更改为:
for (Obj childObj : objectChildren) {
if(childObj !=null){
returnList.add(childObj);
if(childObj.getChildren().size() >0){
getChildrenTree(childObj,returnList);
}
}
}
return returnList;
也就是说,无论它是否有子代,都应始终添加
childObj
。我还将
childObj
的添加项移到添加其子项之前,假设这是您希望节点出现的顺序(即先是父项,然后是子项)。另外,如前所述,循环内不应有return语句,因为它将跳过除第一个孩子以外的所有对象。 return语句应在循环之后。