Free tutorials & notes in Hindi & English · Clean code examples 🧰 मुफ़्त PDF और फ़ोटो टूल्स →
📘 Lesson  ·  Lesson 41

HashSet vs TreeSet

दो तरह के Set

HashSet और TreeSet दोनों Sets हैं — सिर्फ़ unique items store करती हैं — पर बड़ा अंतर order है। HashSet कोई order नहीं रखती और तेज़ है; TreeSet items को अपने-आप sorted रखती है पर थोड़ी धीमी है। आप इस आधार पर चुनते हैं कि sorting चाहिए या नहीं।

💡 HashSet = unique, कोई order नहीं, तेज़। TreeSet = unique, हमेशा sorted, थोड़ी धीमी।

HashSet

import java.util.HashSet;

HashSet<Integer> set = new HashSet<>();
set.add(30); set.add(10); set.add(20);
set.add(10);            // duplicate अनदेखा
System.out.println(set);   // order पक्का नहीं
[20, 10, 30]

HashSet unique items बिना पक्के order store करती है, जो add, remove और contains को बहुत तेज़ बनाता है। तब इस्तेमाल कीजिए जब आपको सिर्फ़ uniqueness और speed चाहिए।

TreeSet

import java.util.TreeSet;

TreeSet<Integer> set = new TreeSet<>();
set.add(30); set.add(10); set.add(20);
System.out.println(set);   // अपने-आप sorted
[10, 20, 30]

TreeSet items को अपने-आप sorted order में रखती है। 30, 10, 20 जोड़ने पर वे 10, 20, 30 के रूप में वापस मिलते हैं। जब आपको sorted रहने वाला set चाहिए तब यह विकल्प है।

Order सबसे बड़ा अंतर

  • HashSet — कोई order नहीं; items किसी भी व्यवस्था में दिख सकते हैं।
  • TreeSet — natural sorted order (numbers बढ़ते, strings A-Z)।
  • LinkedHashSet — तीसरा विकल्प जो insertion order रखता है।

अगर order मायने न रखे, HashSet सबसे अच्छी। sorting चाहिए तो TreeSet इस्तेमाल कीजिए।

Performance और nulls

  • Speed: HashSet तेज़ (लगभग constant time); TreeSet धीमी (sorting रखती है)।
  • Null: HashSet एक null allow करती है; TreeSet कोई नहीं (sort को तुलना करनी पड़ती है)।
  • ज़रूरत: TreeSet elements comparable होने चाहिए।

तुलना

बातHashSetTreeSet
Unique itemsहाँहाँ
Orderकोई नहींSorted
Speedतेज़धीमी
Null allowedएककोई नहीं
किसके लिएSpeed, uniquenessSorted unique data

आम गलतियाँ

  • HashSet से order की उम्मीद। इसमें कोई नहीं — TreeSet या LinkedHashSet इस्तेमाल कीजिए।
  • TreeSet में null जोड़ना। यह NullPointerException देती है।
  • Order न चाहिए तब TreeSet इस्तेमाल करना। HashSet तेज़ है।
  • TreeSet में non-comparable elements। वे comparable होने चाहिए, या Comparator दीजिए।

सारांश

  • दोनों सिर्फ़ unique items store करती हैं।
  • HashSet का कोई order नहीं और तेज़ है।
  • TreeSet items sorted रखती है पर धीमी है।
  • HashSet एक null allow करती है; TreeSet कोई नहीं।
  • Speed को HashSet, sorted data को TreeSet, insertion order को LinkedHashSet इस्तेमाल कीजिए।

आगे, sets दोहराइए Collections Framework में, या sorting नियम सीखिए Comparable vs Comparator से।

अक्सर पूछे जाने वाले प्रश्न (FAQ)

HashSet और TreeSet में क्या अंतर है?
दोनों सिर्फ़ unique items store करती हैं, पर HashSet कोई order नहीं रखती और तेज़ है, जबकि TreeSet items को अपने-आप sorted रखती है और थोड़ी धीमी है। Speed को HashSet, sorted order चाहिए तब TreeSet चुनिए।
क्या HashSet insertion order रखती है?
नहीं। HashSet speed को items को अप्रत्याशित order में store करती है। Insertion order चाहिए तो LinkedHashSet; sorted order चाहिए तो TreeSet इस्तेमाल कीजिए।
TreeSet अपने items कैसे sort करती है?
TreeSet items को natural sorted order में (numbers बढ़ते, strings alphabetically) उनकी compareTo method से, या आपके दिए Comparator से रखती है। हर element comparable होना चाहिए, वरना error देती है।
HashSet और TreeSet में कौन तेज़ है?
HashSet add, remove और contains को तेज़ है (लगभग constant time)। TreeSet धीमी है क्योंकि यह सब कुछ sorted रखती है। जब तक ख़ासकर ordering न चाहिए, HashSet इस्तेमाल कीजिए।
क्या HashSet और TreeSet null store कर सकती हैं?
HashSet एक null element allow करती है। TreeSet null allow नहीं करती क्योंकि इसे sort करने को elements तुलना करने पड़ते हैं, और null तुलना NullPointerException देती है।
← Back to Java Tutorial
🔗

Share this topic with a friend

यह topic किसी दोस्त को भेजें

Found it useful? Send it to a classmate learning the same thing.

अच्छा लगा? जो दोस्त यही सीख रहा है, उसे भेज दीजिए।

💻 लाइव कोड एडिटर

इस पेज के प्रोग्राम यहीं तैयार हैं — चलाएँ, बदलें और सीखें। कुछ भी इंस्टॉल किए बिना।
OneCompiler द्वारा संचालित। कोड एडिटर में अपने आप आ जाता है — Run दबाकर आउटपुट देखें। अगर एडिटर न खुले तो नए टैब में खोलें.
अगला topicComparable vs Comparator आपकी प्रगति: 41 / 61 (67%) · Lesson 42 / 61 आगे बढ़ें →

यह lesson कैसा लगा?

आपकी राय से हम content और बेहतर बनाते हैं।

अपना review और सुझाव लिखें (वैकल्पिक)

Review approve होने के बाद आपका नाम और शहर इसके साथ public दिख सकते हैं। Email या phone न लिखें।

▶ CodingEasily on YouTube

Video से सीखें – आसान Hindi में

चुनी हुई video: RDBMS भाग 3 – Class XI Commerce IT

▶ Channel subscribe करें