永久更改java中的节点内容

时间:2015-04-14 12:10:19

标签: java tree nodes

假设我有一个存储HashSet<String&gt;的节点(因此它是该节点的实例变量)。我有一个getter方法,允许我检索HashSet,但现在我真的需要更新它。这可能吗?如果没有,那么什么是好的解决方法?我已经实现了我的树:

public class CTree implements Serializable {
    public CRoot initialCommit;

      public CTree(int id, CNode parent, HashSet<String> files) {   
           root = new CNode(id, parent, files, inheritedFiles);
      }

    public static class CNode implements Serializable {
       int nodeID;
       CNode parent;
       HashSet<String> toCommit;

    public CNode(int id, CNode parent, HashSet<String> files) { 
        nodeID = id;
        this.parent = parent;
        toCommit = files;

      }

         public HashSet<String> getFiles() {
             return this.toCommit;
         }  

          public CommitNode getParent() {
            return this.parent;
          }


         public int getID() {
           return this.nodeID;
          }
     }


}

1 个答案:

答案 0 :(得分:2)

当您获得节点HashSet时,您无法获得HashSet的副本,您将获得对节点中同一对象的引用。因此,您只需更新它,节点的内容也将更新,因为它们指向同一个对象。

你可能会对返回原语感到困惑。在这种情况下,复制值并修改它对原始图元没有影响。