Java 链表中的迭代

Java 链表中的迭代,java,linked-list,Java,Linked List,我们有一个有5个节点的链表 123445 previous = pointing to 2 Head = pointing to 3 如果 prev.next=head.next; head=head.next; 所以我的问题是head是否指向3,只是通过执行prev.next=head.next删除了3; 新的链表将 1 2 4 5 现在我做head=head.next; 那么,当我已经删除head指向的值为3的节点时,它将如何变为4?prev.next=head.next未从内存中删除

我们有一个有5个节点的链表

123445

previous = pointing to 2
Head = pointing to 3
如果

prev.next=head.next;
head=head.next;
所以我的问题是head是否指向3,只是通过执行prev.next=head.next删除了3; 新的链表将

1 2 4 5
现在我做head=head.next;
那么,当我已经删除head指向的值为3的节点时,它将如何变为4?

prev.next=head.next未从内存中删除节点3

head仍然指向3,head.next仍然指向4


所以写
head=head.next
很好,您只需更改head指向的值。

那么,在head指向下一个元素后,它将保留在内存中还是在它之后被删除?我相信在内存中不再有指向该对象的指针之后,Java的垃圾收集器会将其从内存中删除。之所以称为
head
,是有原因的。您不应该更改其值。使用不同的引用。称它为当前的或有意义的东西。否则,您将如何找到列表的开头?