"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > जावा में हैशसेट और ट्रीसेट के बीच शीर्ष मुख्य अंतर

जावा में हैशसेट और ट्रीसेट के बीच शीर्ष मुख्य अंतर

2024-11-05 को प्रकाशित
ब्राउज़ करें:531

Top Key Differences Between HashSet and TreeSet in Java

1. हैशसेट और ट्रीसेट का अवलोकन

अंतरों पर विचार करने से पहले, आइए संक्षेप में समीक्षा करें कि हैशसेट और ट्रीसेट क्या हैं।

1.1 हैशसेट क्या है?

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

1.2 ट्रीसेट क्या है?

ट्रीसेट एक संग्रह है जो नेविगेबलसेट इंटरफ़ेस को लागू करता है। यह भंडारण के लिए लाल-काले पेड़ का उपयोग करता है, जिसका अर्थ है कि तत्वों को क्रमबद्ध और क्रमबद्ध तरीके से संग्रहीत किया जाता है। ट्रीसेट डुप्लिकेट तत्वों की अनुमति नहीं देता है, लेकिन यह उन स्थितियों के लिए आदर्श है जहां आपको तत्वों का प्राकृतिक क्रम बनाए रखने की आवश्यकता होती है।

2. हैशसेट और ट्रीसेट के बीच मुख्य अंतर

2.1 आदेश देना

  • HashSet : तत्वों का कोई क्रम बनाए नहीं रखता। जिस क्रम में तत्व जोड़े जाते हैं वह उनके संग्रहीत होने के क्रम से संबंधित नहीं होता है।
  • ट्रीसेट : तत्वों को उनके प्राकृतिक क्रम या एक निर्दिष्ट तुलनित्र के आधार पर स्वचालित रूप से ऑर्डर करता है।

2.2 प्रदर्शन

  • हैशसेट : जोड़ने, हटाने और शामिल करने जैसे बुनियादी कार्यों के लिए निरंतर समय जटिलता O(1) प्रदान करता है, जिससे ऑर्डर चिंता का विषय न होने पर यह बहुत तेज़ हो जाता है।
  • ट्रीसेट: बुनियादी संचालन के लिए लॉग (एन) समय जटिलता प्रदान करता है, क्योंकि तत्व एक पेड़ संरचना में संग्रहीत होते हैं, जो हैश-आधारित संरचना से अधिक समय लेता है।

2.3 आंतरिक भंडारण तंत्र

HashSet : आंतरिक रूप से हैश तालिका का उपयोग करता है। प्रत्येक तत्व के हैश कोड का उपयोग उसके भंडारण स्थान को निर्धारित करने के लिए किया जाता है। यदि दो तत्वों का हैश कोड समान है, तो टकराव को संभालने के लिए चेनिंग या प्रोबिंग नामक तकनीक का उपयोग किया जाता है।

उदाहरण कोड:

Set hashSet = new HashSet();
hashSet.add("Apple");
hashSet.add("Banana");
hashSet.add("Mango");

ट्रीसेट : आंतरिक रूप से एक लाल-काले पेड़ का उपयोग करता है। प्रत्येक तत्व को उसके प्राकृतिक क्रम या दिए गए तुलनित्र के अनुसार रखा जाता है, यह सुनिश्चित करते हुए कि पेड़ संतुलित रहता है।

उदाहरण कोड:

Set treeSet = new TreeSet();
treeSet.add("Apple");
treeSet.add("Banana");
treeSet.add("Mango");

2.4 अशक्त तत्व

  • HashSet : एक शून्य तत्व की अनुमति देता है, क्योंकि यह शून्य मान को हैश कर सकता है।
  • TreeSet : शून्य तत्वों की अनुमति नहीं देता क्योंकि उन्हें क्रमबद्ध करने के लिए तत्वों की तुलना करने की आवश्यकता होती है, और किसी भी ऑब्जेक्ट के साथ शून्य की तुलना करने से NullPointerException उत्पन्न होती है।

2.5 तुल्यकालन

  • HashSet : डिफ़ॉल्ट रूप से सिंक्रनाइज़ नहीं है, लेकिन Collections.synchronizedSet का उपयोग करके सिंक्रनाइज़ किया जा सकता है।
  • ट्रीसेट : यह भी डिफ़ॉल्ट रूप से सिंक्रनाइज़ नहीं है, लेकिन इसे उसी तरीके से सिंक्रनाइज़ किया जा सकता है।

2.6 डुप्लिकेट तत्व

HashSet और TreeSet दोनों डुप्लिकेट तत्वों की अनुमति नहीं देते हैं। हालाँकि, डुप्लिकेट का पता लगाने का तरीका अलग-अलग है। HashSet hashCode () और equals () तरीकों का उपयोग करता है, जबकि TreeSet compareTo () या एक Comparator[ का उपयोग करता है। &&&]।

2.7 मेमोरी उपयोग

  • हैशसेट: अंतर्निहित हैश तालिका और टकराव को संभालने के लिए लिंक्ड सूचियों की क्षमता के कारण आम तौर पर अधिक मेमोरी की आवश्यकता होती है।
  • ट्रीसेट: कम मेमोरी का उपयोग करता है क्योंकि यह एक पेड़ संरचना का उपयोग करता है लेकिन ऑर्डर बनाए रखने में अधिक ओवरहेड होता है।
2.8 LinkedHashSet के साथ तुलना

HashSet बनाम LinkedHashSet : जबकि HashSet किसी ऑर्डर की गारंटी नहीं देता है, LinkedHashSet इंसर्शन ऑर्डर बनाए रखता है। TreeSet, दूसरी ओर, तत्वों को स्वाभाविक रूप से या एक कस्टम तुलनित्र द्वारा सॉर्ट करता है।

2.9 उपयोग के मामले

  • हैशसेट : सबसे अच्छा उपयोग तब किया जाता है जब फोकस तेज पहुंच समय पर होता है और ऑर्डर महत्वपूर्ण नहीं होता है।
  • ट्रीसेट : उन परिदृश्यों के लिए आदर्श जहां तत्वों को क्रमबद्ध क्रम में एक्सेस करने की आवश्यकता होती है।
2.10 डेमो परिणाम: पुनरावृत्ति क्रम

नीचे दिए गए कोड स्निपेट को चलाने से पुनरावृत्ति क्रम में अंतर प्रदर्शित होता है:


// हैशसेट उदाहरण सेट हैशसेट = नया हैशसेट(); hashSet.add("ज़ेबरा"); hashSet.add('Apple'); hashSet.add("मैंगो"); System.out.println('हैशसेट:' हैशसेट); // आउटपुट अव्यवस्थित हो सकता है, उदाहरण के लिए, [सेब, आम, ज़ेबरा] // ट्रीसेट उदाहरण सेट ट्रीसेट = नया ट्रीसेट(); TreeSet.add("ज़ेबरा"); TreeSet.add('Apple'); TreeSet.add("मैंगो"); System.out.println('ट्रीसेट:' ट्रीसेट); // आउटपुट को सॉर्ट किया जाएगा, उदाहरण के लिए, [सेब, आम, ज़ेबरा]
// HashSet Example
Set hashSet = new HashSet();
hashSet.add("Zebra");
hashSet.add("Apple");
hashSet.add("Mango");
System.out.println("HashSet: "   hashSet); 
// Output may be unordered, e.g., [Apple, Mango, Zebra]

// TreeSet Example
Set treeSet = new TreeSet();
treeSet.add("Zebra");
treeSet.add("Apple");
treeSet.add("Mango");
System.out.println("TreeSet: "   treeSet); 
// Output will be sorted, e.g., [Apple, Mango, Zebra]
3. निष्कर्ष

हैशसेट और ट्रीसेट के बीच चयन करना आपकी विशिष्ट आवश्यकताओं पर निर्भर करता है:

    जब आपको तत्वों के क्रम की चिंता किए बिना उच्च-प्रदर्शन सेट की आवश्यकता हो तो
  • हैशसेट का उपयोग करें।
  • जब आपको स्वाभाविक रूप से या कस्टम ऑर्डर द्वारा क्रमबद्ध तत्वों की आवश्यकता हो तो
  • ट्रीसेट का उपयोग करें।
क्या आपके कोई प्रश्न हैं? बेझिझक नीचे एक टिप्पणी छोड़ें!

यहां अधिक पोस्ट पढ़ें: जावा में हैशसेट और ट्रीसेट के बीच शीर्ष 10 मुख्य अंतर

विज्ञप्ति वक्तव्य यह आलेख यहां पुन: प्रस्तुत किया गया है: https://dev.to/anh_trntun_4732cf3d299/top-10-key-differences-between-hashset-and-treeset-in-java-49f3?1 यदि कोई उल्लंघन है, तो कृपया स्टडी_गोलंग@163 से संपर्क करें इसे हटाने के लिए .com
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3