Я боюсь, что это действительно глупый вопрос, но здесь идет:ясно() осущий в LinkedList в Java
Почему ясный метод реализации LinkedList по умолчанию в Java потрудился список и отцепить все узлы? Почему бы просто не отцепить заголовок и оставить остальную часть связанного списка - GC все равно получит его, нет?
Вот метод:
/**
* 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++;
}
Почему пройти его? Почему бы просто не перейти к header.next = header.previous = header;
?
Лучшее, что я могу понять, это помогает GC ...? Эта ссылка http://java.sun.com/docs/books/performance/1st_edition/html/JPAppGC.fm.html#997442 своего рода предлагает это.
ТИА ...
Я был настроен на несогласие, заявив, что для внешнего кода не существует ссылки на ссылку LinkedList $ Entry ..., но косвенно через LinkedList $ ListItr вы можете ... Спасибо и поймайте! – overthink
Что будет с узлом? Iterator или subList, но они не будут действительны, поэтому не будут сохраняться. –
@Tom: если вы этого не сделали, сублистер и итератор будут продолжать работать, но структура коллекции пытается быть неудачной (но не гарантирует). –