在 java 中永久更改节点的内容

Permanently changing a node's contents in java

假设我有一个存储 HashSet<String> 的节点(因此它是该节点的一个实例变量)。我有一个 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;
          }
     }


}

当您获取节点的 HashSet 时,您获取的不是 HashSet 的副本,而是获取节点中同一对象的引用。所以你可以只更新它,节点的内容也会更新,因为它们指向同一个对象。

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