首页 > 解决方案 > 删除我创建的java中的整个链表

问题描述

我想删除我在 java 中创建的整个列表(注意:我没有在 java.util 中使用内部列表)。我已将 head 分配给 null,但我的问题是 java 垃圾收集器会处理没有 head 的列表,还是应该删除将由 java 垃圾收集器处理的每个节点(我的意思是将每个节点设置为 null)?以下是我的代码,请让我知道哪一个可以,尽管两者都可以,但我仍然想知道。提前致谢。

//first code
public void deleteList()
{
    Node n = head;
    Node n1;
    head = null;
    System.out.println("Deleting list");
    while(n != null)
    {
        n1 = n;
        n = n.next;
        n1 = null;
    }
    n1 = n;
    n1 = null;
    System.out.println("List deleted");
}
//second code
public void deleteList()
{
    head = null;
}

标签: javasingly-linked-list

解决方案


这取决于您的实施。如果您的 Node 类只是内部的(因此您永远不会返回可能保存它的 Node)并且您没有任何静态数据,那么应该没有从垃圾收集根到任何节点的路径,并且 GC 将摆脱他们。

所以这可能是对的,除非你的实现做了一些不寻常的事情。(我还假设您没有尾变量或其他任何引用内部节点的变量,因为这些变量也需要设置为 null)。


推荐阅读