मुझे लगता है कि मैं जिस परियोजना पर काम कर रहा हूं उस पर लिंकडलिस्ट। क्लीयर() ओ (1) था, क्योंकि मैंने अपने उपभोक्ता में अवरुद्ध करने के लिए एक लिंक्डलिस्ट का उपयोग किया था इसके बाद बाद में लिंक्डलिस्ट को उच्च थ्रूपुट, समाशोधन और पुन: उपयोग करने की आवश्यकता है।LinkedList.Clear() ओ (1)
बदल जाता है बाहर है कि इस धारणा है, गलत था के रूप में (OpenJDK) कोड करता है:
Entry<E> e = header.next;
while (e != header) {
Entry<E> next = e.next;
e.next = e.previous = null;
e.element = null;
e = next;
}
इसमें कुछ समय आश्चर्य की बात थी, देखते हैं किसी भी अच्छे कारण के LinkedList.Clear सकता है बस नहीं अपने हैडर "भूल" .next और header.previous सदस्य?
// Clearing all of the links between nodes is "unnecessary", but:
// - helps a generational GC if the discarded nodes inhabit
// more than one generation
// - is sure to free memory even if there is a reachable Iterator
कि यह काफी स्पष्ट करता है कि वे क्यों कर रहे हैं:
http://www.docjar.com/html/api/java/util/LinkedList.java.html सद्भावना में यह है (1) – Bozho
अच्छी व्याख्या आप यहां पा सकते हैं: http://stackoverflow.com/questions/575,995/साफ-impl-इन-Javas-linkedlist। जेसन – smas