包含列表列表的Java算法go to list
我想从一个列表中获取所有元素,但这个元素也有列表,直到列表为空(node.getChildNotes() == null)
我试过下面的方法,但这不是一个能深入到无限深度的算法
private List<Layout> createChildList(Node node) {
List<Layout> layouts = new ArrayList<>();
int count = 0;
while (true) {
Node child = node.getChildNodes().item(count);
if(child == null){
break;
}
NodeList children = child.getChildNodes();
for (int i = 0; i < children.getLength(); i++) {
child = children.item(i);
Layout layout = new Layout();
layout.setName(child.getNodeName());
layouts.add(layout);
}
count++
}
return layouts;
}
private List<LayoutEntity> createChildList(Node node) {
List<LayoutEntity> layouts = new ArrayList<>();
NodeList nodeList = node.getChildNodes();
for (int i = 0; i < nodeList.getLength(); i++) {
Node childNode = nodeList.item(i);
LayoutEntity layout = new LayoutEntity();
layout.setId(getIdByNode(childNode));
layout.setName(childNode.getNodeName());
layouts.add(layout);
if (childNode.hasChildNodes()) {
createChildList(childNode);
}
}
return layouts;
}
# 1 楼答案
我认为,使用深度递归函数,可以首先获取父节点的所有子节点,然后为每个节点创建一个
new Layout
# 2 楼答案
在if条件之后,获得子节点,并有一个for循环,在该循环中检查所有子节点。我不知道你为什么需要while(真)循环。就这样吧。此外,count变量也没用