我在Tree
类下面,具有以下属性以及它们的getter和setters。
public class Tree {
private String name, address;
private List<Tree> child;
}
我正在迭代
Tree
并将名称与有效名称列表进行比较。如果名称无效,则必须从主Tree
中删除该特定的Tree
节点。但是,我不知道如何实现删除功能。private void validateTree(Tree tree) {
if (tree.getChild() != null && !tree.getChild().isEmpty()) {
for(Tree node:tree.getChild()){
if(list.contains(node.getName())){ // String elements in list
validateTree(tree); // validate the subtree
} else {
// Here I have to remove the child node from the Tree.
}
}
}
}
最佳答案
最简单的方法是在removeChild()
中添加Tree
方法:
public class Tree {
List<Tree> child;
public void removeChild(Tree tree) {
child.remove(tree);
}
}
在您的验证方法中,您可以使用它:
if (validNodes.contains(node.getName())) {
validateTree(tree);
} else {
tree.removeChild(node);
}
但是,当您更改要循环的集合时,您应该总是非常怀疑。我强烈建议保留原始的
Tree
,并创建仅包含有效节点的第二个有效的Tree
。