에서 분명히() IMPL 나는이 정말 바보 같은 질문입니다 두려워하지만, 여기 간다 :자바의 LinkedList의
왜 자바의 기본 LinkedList의 구현에 명확한 방법은 목록을 걸어 모든 노드를 벗기기 귀찮게합니까? 왜 헤더를 풀고 목록의 나머지 부분을 연결 한 채로 두지 마십시오. 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 일종의 제안.
TIA는 ...
나는 외부 코드가 LinkedList의 $ 항목에 대한 참조를 얻을 수있는 방법은 없습니다 말, 동의하는 모든 설정했다 ...하지만 간접적 LinkedList의 $ ListItr을 통해 확인 할 수 ... 감사합니다 좋은 캐치! – overthink
노드를 보유하고있는 것은 무엇입니까? Iterator 또는 subList이지만 유효하지 않으므로 계속 유지해야합니다. –
@Tom :이 작업을 수행하지 않았다면 subList와 Iterator는 계속 작동하지만 콜렉션 프레임 워크는 fail-fast를 시도합니다 (그러나 보장하지는 않습니다). –