Java 将节点添加到LinkedList时,幕后会发生什么(堆、堆栈等)?
编辑:我搜索了youtube,没有关于linkedlist和heap的任何信息 垃圾收集器何时擦除温度?我知道它应该,但看不到在哪里 我很难理解它。凭直觉我会写Java 将节点添加到LinkedList时,幕后会发生什么(堆、堆栈等)?,java,object,linked-list,heap,aliasing,Java,Object,Linked List,Heap,Aliasing,编辑:我搜索了youtube,没有关于linkedlist和heap的任何信息 垃圾收集器何时擦除温度?我知道它应该,但看不到在哪里 我很难理解它。凭直觉我会写 public void addToHead(IntNode node) { IntNode temp = _head; _head = node; node.setNext(temp); } 我知道这是不对的,但我觉得我需要了解那里的对象和地址是怎么回事,才能抓住重点 第一行:我创建一个临时文件,并将其指向相同
public void addToHead(IntNode node) {
IntNode temp = _head;
_head = node;
node.setNext(temp);
}
我知道这是不对的,但我觉得我需要了解那里的对象和地址是怎么回事,才能抓住重点
第一行:我创建一个临时文件,并将其指向相同的地址\u head points秒行:现在head指向address节点点,(node.next等于head.next)
第三行:node.next变为temp..
我说得对吗这项工作如下:
节点
位于堆栈上,并引用要插入的堆对象(A)\u head
可能是堆对象(列表)的成员,并引用当前位于列表头部的堆对象(B)temp
,然后该引用也引用该对象(B)\u head
更改为节点所引用的堆对象,因此\u head
现在引用(A)
\u head
和节点
引用,以使其下一个
成员引用(B)next
-成员引用,依此类推,那么垃圾收集不会声明任何内容\u头=节点代码>但是那老脑袋怎么办?想想把回形针连在一起。你不能每次得到一个新的剪辑就删除现有的链。您必须将现有链连接到新的回形针。它的工作原理与此相同:您必须将现有的节点链附加到新的头上。我理解这一点,但堆和地址是怎么回事。?临时工呆在那里?每次我用这个方法时,另一个临时工会留在那里?当它消失的时候?它是如何工作的…谢谢midor我明白了,再问几个问题-基本上每次我向列表中添加一个新节点时,所有这些节点都有一个指向它们的临时点?我想这就是我困惑的地方(“暂时”)-如果节点和_头现在引用(A),我可以写_头吗?_next=temp?您可以,但随后您创建了一个对自己的引用,在迭代时,您将在一个循环中结束。创建temp以保留对(B)的引用,同时将head分配给指向(a)的点。否则,您将无法再找到(B)。更合乎逻辑的做法是将最后一行更改为_head.setNext(temp)。基本上你想做的就是从这个(B)->。。。。本条(A)->(B)->。。。。。您的列表非常不寻常,因为您传入了列表节点,因此理论上可以消除temp,并执行node.next=\u head_头部=节点;
_head = node;