节点如何在Java中工作?

时间:2015-10-16 20:58:00

标签: java nodes

我的教科书中有以下代码。并且代码打算删除节点。

Node<String> nodeRef = head.next;
nodeRef.next = nodeRef.next.next;

Node<String> nodeRef = head.next;实际上做了什么? nodeRef是否复制head.next节点项? 如果是,那是head.next指向nodeRef和原始head.next吗?

Node<String> nodeRef = head.next;只是给head.next命名而不是创建一个新节点?

仍然对节点如何工作感到困惑。有人可以解释一下吗?

1 个答案:

答案 0 :(得分:1)

“节点”并不重要;这些只是对象的引用。将Node替换为任何其他引用类型,问题完全相同。

Node nodeRef = head.next;

这会将nodeRef设置为对head.next中的任何内容的引用。它不会复制任何内容。

除非你真正改变它,否则

head.next根本不会改变。

要解决您的一条评论:

nodeRef.next = nodeRef.next.next会照其说的做;现在将引用nodeRef.next而不是引用原始nodeRef.next.next

原始nodeRef.next引用的对象将不再迭代,因为没有节点指向它。它可能有资格获得GC,也可能没有资格获得GC,具体取决于是否有任何其他人参考GC。

(其他节点可以实际引用它,就像允许使用循环列表一样。)