Ich fürchte, das ist eine wirklich dumme Frage, aber ich sage es trotzdem:
Warum macht sich die clear-Methode in Javas Standard-Implementierung von LinkedList die Mühe, die Liste zu durchlaufen und alle Knoten auszuhängen? Warum nicht einfach den Header abkoppeln und den Rest der Liste verbunden lassen - der GC wird ihn doch sowieso bekommen, oder?
Hier ist die Methode:
/**
* Removes all of the elements from this list.
*/
public void clear() {
Entry<E> e = header.next;
while (e != header) {
Entry<E> next = e.next;
e.next = e.previous = null;
e.element = null;
e = next;
}
header.next = header.previous = header;
size = 0;
modCount++;
}
Warum zu Fuß gehen? Warum nicht einfach zu header.next = header.previous = header;
?
Das Beste, was ich mir vorstellen kann, ist, dass es dem GC hilft...? Dieser Link http://java.sun.com/docs/books/performance/1st_edition/html/JPAppGC.fm.html#997442 legt das irgendwie nahe.
TIA...