Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Java

जावा में TreeSet और HashSet के बीच अंतर

HashSet और TreeSet दोनों कलेक्शन फ्रेमवर्क से संबंधित हैं। HashSet Set इंटरफेस का इम्प्लीमेंटेशन है जबकि TreeSet SortedSet को इम्प्लीमेंट करता है। TreeSet TreeMap द्वारा समर्थित है जबकि HashSet HashMap द्वारा समर्थित है।

क्र.सं. मुख्य बिंदु HashSet TreeSet
1 इम्प्लीमेंटेशन HashSet, HashTable का उपयोग करके इम्प्लीमेंटेड है (वास्तव में HashMap) TreeSet, ट्री स्ट्रक्चर (Red-Black Tree) का उपयोग करके इम्प्लीमेंटेड है
2 नल ऑब्जेक्ट HashSet एक नल ऑब्जेक्ट की अनुमति देता है TreeSet नल ऑब्जेक्ट की अनुमति नहीं देता। यह NullPointerException थ्रो करता है
3 मेथड्स HashSet दो ऑब्जेक्ट्स की तुलना के लिए equals मेथड का उपयोग करता है TreeSet दो ऑब्जेक्ट्स की तुलना के लिए compare मेथड (compareTo/comparator) का उपयोग करता है
4 हेटेरोजीनियस ऑब्जेक्ट HashSet हेटेरोजीनियस ऑब्जेक्ट की अनुमति नहीं देता (टाइप सेफ्टी के कारण) TreeSet हेटेरोजीनियस ऑब्जेक्ट की अनुमति देता है (यदि comparator सपोर्ट करता है)
5 क्रम HashSet किसी भी क्रम को मेंटेन नहीं करता TreeSet ऑब्जेक्ट्स को सॉर्टेड क्रम में मेंटेन करता है

TreeSet का उदाहरण

class TreeSetExample {
    public static void main(String[] args) {
        TreeSet<String> treeset = new TreeSet<>();
        treeset.add("Good");
        treeset.add("For");
        treeset.add("Health");
        // डुप्लिकेट एलिमेंट जोड़ें
        treeset.add("Good");
        
        System.out.println("TreeSet: ");
        for (String temp : treeset) {
            System.out.println(temp);
        }
    }
}

आउटपुट

TreeSet:
For
Good
Health

HashSet का उदाहरण

class HashSetExample {
    public static void main(String[] args) {
        HashSet<String> hashSet = new HashSet<>();
        hashSet.add("Good");
        hashSet.add("For");
        hashSet.add("Health");
        // डुप्लिकेट एलिमेंट जोड़ें
        hashSet.add("Good");
        
        System.out.println("HashSet: ");
        for (String temp : hashSet) {
            System.out.println(temp);
        }
    }
}

आउटपुट

HashSet:
Health
For
Good

परफॉरमेंस तुलना

  • HashSet: O(1) एवरेज केस लिए add, remove, contains
  • TreeSet: O(log n) लिए add, remove, contains (ट्री स्ट्रक्चर के कारण)

कब किसका उपयोग करें?

  • HashSet: जब ऑर्डर मायने नहीं रखता, फास्ट लुकअप चाहिए, नल एलिमेंट्स हों
  • TreeSet: जब सॉर्टेड ऑर्डर चाहिए, रेंज क्वेरीज करनी हों (subSet, headSet, tailSet)
  1. - जावा में ConcurrentHashMap और Synchronized HashMap के बीच अंतर

    ConcurrentHashMap एक क्लास है जिसे JDK 1.5 में पेश किया गया था। ConcurrentHashMap मैप में जोड़ते या अपडेट करते समय केवल बकेट लेवल पर लॉक लगाता है जिसे फ्रैगमेंट कहा जाता है। इसलिए, ConcurrentHashMap मैप पर कनकरेंट रीड और राइट ऑपरेशन की अनुमति देता है। Synchronized HashMap (Collections.synchronizedM

  1. - जावा में Iterator और Enumeration के बीच अंतर

    Iterator और Enumeration दोनों कलेक्शन से एलिमेंट्स को ट्रैवर्स और एक्सेस करने के लिए कर्सर हैं। वे दोनों कलेक्शन फ्रेमवर्क से संबंधित हैं। Enumeration JDK 1.0 में जोड़ा गया था और Iterator JDK 1.2 वर्जन में कलेक्शन फ्रेमवर्क में जोड़ा गया। Enumeration कलेक्शन में स्ट्रक्चरल चेंज नहीं कर सकता क्योंकि

  1. - Java में ArrayList और HashSet के बीच अंतर

    HashSet और ArrayList दोनों Java कलेक्शन फ्रेमवर्क के सबसे महत्वपूर्ण क्लासेस में से कुछ हैं।ArrayList और HashSet के बीच महत्वपूर्ण अंतर निम्नलिखित हैं।क्रमांकमुख्य बिंदुArrayListHashSet1कार्यान्वयनArrayList लिस्ट इंटरफेस का कार्यान्वयन है।दूसरी ओर HashSet सेट इंटरफेस का कार्यान्वयन है।2आंतरिक कार्या