2010-08-21 16 views
15

काशLinkedHashSet या ArrayList

  1. करने से बचें दोहराया आइटम डाला जा रहा है।
  2. जब मैं संग्रह वर्ग के माध्यम से पुन: प्रयास करता हूं, तो लौटाया गया आइटम सम्मिलन आदेश के समान होता है।

क्या मुझे पता है, मुझे क्या पता होना चाहिए, या तो ArrayList (स्पष्ट रूप से निष्पादन से पहले चेक शामिल है) या LinkedHashSet चुनने के लिए मुझे क्या चाहिए?

धन्यवाद।

उत्तर

18

निश्चित रूप से LinkedHashSet का उपयोग करें। यह आपको जो चाहिए उसे बनाने के लिए बनाया गया है। हर बार आपको कुछ डालने की आवश्यकता होने पर संपूर्ण ऐरेलिस्ट खोजना प्रदर्शन हत्यारा (ओ (एन) हर बार होगा))

+0

प्रदर्शन आकार, संचालन की आवृत्ति, स्मृति उपयोग इत्यादि पर निर्भर करेगा। –

4

यदि आप डुप्लिकेट आइटम डालना नहीं चाहते हैं तो LinkedHashSet का उपयोग करें।

+0

और यह भी प्रविष्टि आदेश http://download.oracle.com/javase/6/docs/api/java/util/LinkedHashSet.html को बरकरार रखता है बेशक – crowne

2

LinkedHashSet पूरी तरह बिल को फिट करने लगता है।

जब आप अपनी खुद की वस्तुओं का निर्माण करते हैं, और यहां LinkedHashSet जैसे संग्रह में उनका उपयोग करने की योजना बनाते हैं। उस आइटम के लिए equals और hashcode दोनों को ओवरराइड करना न भूलें, जिसमें आप इसे स्टोर करने जा रहे हैं।

2

इस जांच करें बाहर: http://wiki3.cosc.canterbury.ac.nz/images/e/e9/JavaCollections.png

LinkedHashSet आपको क्या चाहिए, क्योंकि यह सेट इंटरफेस के एक कार्यान्वयन है। सेट में एक बहुत ही अच्छी आदत है: यह डिफ़ॉल्ट रूप से डुप्लिकेट की अनुमति नहीं देता है। तो, हम आपके 1.

के साथ क्या किया जाता है 2 के बारे में क्या? हम जानते हैं, हमें सेट कार्यान्वयन में से एक की आवश्यकता है, लेकिन कौन सा?

हैश मैप - आप के, वी जोड़े को स्टोर करने में सक्षम हैं, लेकिन कोई ऑर्डर नहीं है।

TreeSet - यह सबसे धीमी समाधान है, क्योंकि यह छाँटे गए और आदेश दिया हर आइटम रखने के लिए एक compareTo विधि का उपयोग कर रहा है। यही कारण है कि जब आप ट्रीसेट बनाते हैं तो आप इसके लिए तुलनित्र पास कर सकते हैं।

लिंक्ड हैशसेट - उन्हें शामिल करने के क्रम में तत्व वापस देता है। यह हैशसेट का ऑर्डर किया गया संस्करण है।

कृपया यहाँ एक शांत वर्णन लगता है: http://java67.blogspot.co.uk/2014/01/when-to-use-linkedhashset-vs-treeset-vs-hashset-java.html?_sm_au_=iVVMtMLHSDQ5P0P7

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