Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 双链表最后删除_Java_Data Structures - Fatal编程技术网

Java 双链表最后删除

Java 双链表最后删除,java,data-structures,Java,Data Structures,我有一个关于头部和最后一个节点的引用。 嗨,我有个问题。当我删除双链接列表中的最后一个节点时,我是否必须将该节点的上一个引用设置为null,或者我是否可以将其保留。 删除最后一个节点时,我会执行类似的操作 lastNode = lastNode.prev; // lets lastNode reference the new last node lastNode.next = null; // removes link to the old last node 当我使用toString方法时,

我有一个关于头部和最后一个节点的引用。 嗨,我有个问题。当我删除双链接列表中的最后一个节点时,我是否必须将该节点的上一个引用设置为null,或者我是否可以将其保留。 删除最后一个节点时,我会执行类似的操作

lastNode = lastNode.prev; // lets lastNode reference the new last node
lastNode.next = null; // removes link to the old last node

当我使用toString方法时,它会按预期打印。只是想知道是否有必要将旧的last node prev设置为null。或者垃圾收集器只是删除它,因为没有对它的引用,即使旧节点仍然有对链接列表中某个节点的引用

如果有任何方法访问新删除的lastNode对象,您只需要将引用更新为null。如果无法通过遍历列表到达此节点,则不必担心


不过,为了以防万一,最好进行此类清理。

如果有任何方法可以访问新删除的lastNode对象,则只需将引用更新为null。如果无法通过遍历列表到达此节点,则不必担心


不过,为了以防万一,最好进行此类清理。

确保更新头部指针(如果适用)。确保更新头部指针(如果适用)。我敢说,您一定要将新lastNode的下一个指针设置为null,因为它的指针应该正确地指向内存中正确的东西。让指针指向内存中不存在的对象(即使在这两种情况下都为null!)从根本上讲是没有意义的。我认为他指的是已删除的节点,而不是新的lastNode。在双链接列表中,他肯定必须更新仍然在列表中的节点的上一个和下一个引用。我指的是已删除的节点。没有添加新节点,只是更新引用以从列表中删除最后一个节点。lastNode使用我提供的上述代码引用了倒数第二个节点。我问的是天气与否,这很重要,或者垃圾收集器无论如何都会删除它,因为它不再引用该节点。GC将收集旧的最后一个节点,不管它是否指向新的最后一个节点。它所关心的只是旧的最后一个节点不可访问。这样做仍然是一个很好的做法,例如,如果某个对象保留了对旧的最后一个节点的引用,则在尝试遍历(向后)时,如果已执行清理,则该对象将彻底失败(NPE)。否则,您可能会遇到一个难以诊断的错误,我冒昧地说,您肯定应该始终将新lastNode的下一个指针设置为null,因为它的指针应该正确地指向内存中的正确对象。让指针指向内存中不存在的对象(即使在这两种情况下都为null!)从根本上讲是没有意义的。我认为他指的是已删除的节点,而不是新的lastNode。在双链接列表中,他肯定必须更新仍然在列表中的节点的上一个和下一个引用。我指的是已删除的节点。没有添加新节点,只是更新引用以从列表中删除最后一个节点。lastNode使用我提供的上述代码引用了倒数第二个节点。我问的是天气与否,这很重要,或者垃圾收集器无论如何都会删除它,因为它不再引用该节点。GC将收集旧的最后一个节点,不管它是否指向新的最后一个节点。它所关心的只是旧的最后一个节点不可访问。这样做仍然是一个很好的做法,例如,如果某个对象保留了对旧的最后一个节点的引用,则在尝试遍历(向后)时,如果已执行清理,则该对象将彻底失败(NPE)。否则,您可能会遇到难以诊断的错误