Java-我们可以将链接节点中的firstNode设置为null以删除所有条目吗?

问题描述 投票:0回答:3

我有下面的代码:

public final class LinkedBag<T> implements BagInterface<T> {
    private Node firstNode;
    private int numberOfEntries;

    public LinkedBag() {
        firstNode = null;
        numberOfEntries = 0;
    }

    // Other methods defined
    public int getCurrentSize() { }
    public boolean isEmpty() { }
    public boolean add(T newEntry) { }
    public T remove() { }
    public boolean remove(T anEntry) { }
    public int getFrequencyOf(T anEntry) { } 
    public boolean contains(T anEntry) { }
    public T[] toArray() { }

    public void clear() { 
        while(!isEmpty())
            remove();
    } 
}

要删除所有条目,上述版本的clear方法将取消分配链中的每个节点,从而使其为空。

但是,要删除所有条目,以下版本的clear方法将取消分配链中的所有节点,从而使其为空?

    public void clear() { 
        firstNode = null;
    }
java data-structures singly-linked-list
3个回答
0
投票

是的,会。与C / C ++负责重新分配早先分配的内存不同,Java在没有对对象的强引用的情况下会负责collecting


0
投票

是;除了您还应该记住也要设置numberOfEntries = 0;。然后,您的链表处于与刚刚创建一个新的空链表相同的状态(请注意,您的构造函数执行相同的两件事),因此它正确地表示了一个空表。


0
投票

是,将第一个节点设置为空将起作用。对所有后续节点的引用将丢失,它们将由垃圾收集器自动释放。

© www.soinside.com 2019 - 2024. All rights reserved.