2012-10-27 27 views
5

जैसा कि मैंने LinkedHashMap के दस्तावेजीकरण करने के लिए भेजा, इसे कहते हैं, एक डबल लिंक्ड सूची (DLL) आंतरिक रूप से बनाए रखा हैलिंक्ड हैशैप का इम्प्ला - डबल लिंक्ड लिस्ट का उपयोग करता है, एकल लिंक वाली सूची नहीं; क्यों

मुझे समझ में क्यों एक DLL एस (चिमनी) डालूँगा सबसे बड़ा लाभ यह मैं चुना गया था कोशिश कर रहा था एक डीएलएल के साथ मिलना पीछे की तरफ जा रहा है, लेकिन मुझे इस लाभ का शोषण करने वाले LinkedHashMap() के लिए कोई भी उपयोग केस नहीं दिख रहा है, क्योंकि Iterable इंटरफ़ेस में अगला() जैसे पिछले() प्रकार का ऑपरेशन नहीं है ..

कोई भी समझाओ कि एक डीएलएल क्यों था, और एसएलएल नहीं?

+0

हटाए गए कार्यों से संबंधित हो सकता है। – bdares

+0

@bdares मुझे लगता है कि इष्टतम ट्रैवर्सल gaurentees इष्टतम हटाने भी। ट्रैवर्सल बुद्धिमान, मेरा मानना ​​है कि एसएलएल डीएलएल के रूप में इष्टतम है – smc

उत्तर

7

ऐसा इसलिए है क्योंकि एक अतिरिक्त हैश मानचित्र के साथ, आप ओ (1) में हटाए गए लागू कर सकते हैं। यदि आप एक सिंगल लिंक्ड सूची का उपयोग कर रहे हैं, तो हटाएं ओ (एन) ले जाएगा।

एक प्रमुख मूल्य जोड़ी संग्रहीत करने के लिए हैश मानचित्र पर विचार करें, और लिंक के साथ नोड्स को इंगित करने वाली कुंजी के साथ एक और आंतरिक हैश नक्शा। हटाते समय, यदि यह दोगुनी जुड़ी हुई सूची है, तो मैं आसानी से पिछले तत्व तक पहुंच सकता हूं और इसे निम्न तत्व को इंगित कर सकता हूं। एक सिंगल लिंक्ड सूची के साथ यह संभव नहीं है।

http://www.quora.com/Java-programming-language/Why-is-a-Java-LinkedHashMap-or-LinkedHashSet-backed-by-a-doubly-linked-list

संबंधित मुद्दे