【问题标题】:Permanently changing a node's contents in java在java中永久更改节点的内容
【发布时间】:2015-04-14 12:10:19
【问题描述】:

假设我有一个存储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,你可以在上面做任何你想做的事情。更新它有什么问题?

标签: java tree nodes


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-11-06
    • 1970-01-01
    • 2021-11-29
    • 2012-05-28
    • 1970-01-01
    • 2016-04-09
    • 2019-03-20
    相关资源
    最近更新 更多