Java 如何删除列表中的所有节点

Java 如何删除列表中的所有节点,java,singly-linked-list,Java,Singly Linked List,这是删除链表中所有节点而不使用参数的方法 public void deleteAll() { if(head==null) { System.out.println("list already empty"); } else { Node temp=head; Node del; while(temp.next!=null) { del=temp.next; temp=null

这是删除链表中所有节点而不使用参数的方法

public void deleteAll() {
    if(head==null) {
        System.out.println("list already empty");
    }
    else {
        Node temp=head; Node del;
        while(temp.next!=null) {
            del=temp.next;
            temp=null;
            temp=del;
        }
        System.out.println("all nodes deleted");
    }
}
您忘记将
head
设置为空

由于垃圾收集,列表中的所有节点不再可引用,将被垃圾收集


将变量设置为null不会产生实际效果。将字段设置为null,将使对象(值)可能无法访问,并可用于垃圾收集。

上一个“节点”下一个仍将指向
temp
temp=null
仅影响
temp
。它不会影响从中分配的任何变量
temp
。而且
temp=null
也不起作用,因为java是按值传递的,而不是按引用传递的。因此,我可以编写什么来删除上一个节点。@subhampadhahary
head=null
非常有效。但是假设我想手动删除列表中的每个节点。我该怎么做?第一个元素可以通过
if(head!=null)head=head.next删除。将
if
更改为
,同时
继续删除元素。但是,立即将
head
设置为null也有同样的效果。在java中没有
delete
operator/
free
函数,因此必须依赖jvm。
public void deleteAll() {
    head = null;
}