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)