如何删除节点

时间:2012-10-03 15:19:29

标签: java primefaces

我正在使用private TreeNode root;创建一个动态树。

我用过

<p:tree value="#{bean.root}" var="node">
    <p:treeNode>
        h:outputText value="#{node}" />
    </p:treeNode>
</p:tree>

将其显示在我的页面中。

我的问题是如何删除空的节点(不包含子节点)

例如:

node1
   child 1
   child 2
node2 
node3
  child 1

(节点2为空,如何删除它?)

1 个答案:

答案 0 :(得分:5)

您可以先让所有孩子循环树:

List<TreeNode> nodes = this.root.getChildren();

然后你可以做这样的事情:

List<TreeNode> nodes = ....
Iterator<TreeNode> i = nodes.iterator();
while (i.hasNext()) {
   TreeNode = i.next(); 
   // Use isLeaf() method to check doesn't have childs.
   i.remove();
}

这将是下一个代码的正确版本,因为我猜你不能在循环中删除集合元素。

for (TreeNode treeNode : nodes) {
   if(treeNode.isLeaf()){
       TreeNode parent = treeNode.getParent();
       parent.getChildren().remove(treeNode);
   }
}

希望它有所帮助。

问候。