लोड हो रहा है...

Java में HashSet

एक HashSet<String> नाम tags बनाएँ, tags.add("oak"); कॉल करें, फिर tags.add("pine");, फिर फिर से tags.add("oak");, और tags.size() छापें। Bin.java को कंपाइल करें और java Bin चलाएँ। स्क्रीन पर एक पंक्ति दिखनी चाहिए: 2। दूसरे oak ने तीसरा मान नहीं बनाया। एक set में अद्वितीय मान — यही इस पृष्ठ की शिक्षा है।

अद्वितीय मान, कुंजी-और-मान जोड़े नहीं

HashMap पृष्ठ पर आपने put और get से ऐसी कुंजी रखी जो मान की ओर इशारा करती थी। HashSet अकेले मान रखता है। हर मान अधिकतम एक बार आता है। अगर आप एक ही शब्द दो बार add करते हैं, set उसे फिर भी एक बार रखता है। इस पृष्ठ के शिक्षण पथ पर अलग कुंजी स्ट्रिंग नहीं है।
Bin.java खोलें। सार्वजनिक वर्ग का नाम Bin रखें ताकि फ़ाइल नाम से मेल खाए। बचे हुए HashMap पंक्तियाँ, scores.put, scores.get, और कोई भी Desk डेमो हटाएँ। वे map पृष्ठ के हैं। कोई भी बचा ArrayList, Rack, Scanner, या nextLine भी हटाएँ। प्रोग्राम टाइप करने का इंतज़ार नहीं करना चाहिए।
ऊपर के पास, public class Bin के ऊपर लिखें:
import java.util.HashSet;
यह import प्रकार HashSet को छोटे नाम तक पहुँचाता है। इसके बिना इस पृष्ठ पर javac छोटा नाम HashSet नहीं देखता। java.util और HashSet ध्यान से लिखें। यहाँ import java.util.*; को ज़रूरी न बनाएँ — एक सटीक import काफ़ी है।
main के अंदर set बनाएँ:
HashSet<String> tags = new HashSet<String>();
कोण कोष्ठकों में String है क्योंकि यह पाठ शब्द रखता है। नाम tags वही है जो आप रखते हैं। कॉल new HashSet<String>() खाली set बनाता है। इस क्षण में इसमें शून्य मान हैं।

oak, pine, फिर oak जोड़ें — फिर size

अपनी पंक्ति पर tags.add("oak"); कॉल करें। फिर tags.add("pine"); कॉल करें। फिर तीसरी बार उसी शब्द के साथ tags.add("oak"); कॉल करें। तीसरी कॉल set को नहीं बढ़ाती। फिर लिखें:
System.out.println(tags.size());
पहली रखी फ़ाइल के लिए पूरा set नहीं, आकार छापें। संख्या 2 साबित करती है कि डुप्लिकेट नज़रअंदाज़ हुआ। कंपाइल से पहले सहेजें।

Bin size after duplicate add

java
import java.util.HashSet;

public class Bin {
    public static void main(String[] args) {
        HashSet<String> tags = new HashSet<String>();
        tags.add("oak");
        tags.add("pine");
        tags.add("oak");
        System.out.println(tags.size());
    }
}

जिस फ़ोल्डर में Bin.java है, वहाँ से javac Bin.java चलाएँ। जब कोष्ठक, ब्रेसेस, कोण कोष्ठक और सेमीकोलन मेल खाते हैं, javac अपनी कोई पंक्ति नहीं लिखता। फिर java Bin चलाएँ — न java Bin.java, न java HashSet। रन कमांड से .java अंत हटाएँ।
प्रोग्राम को एक पंक्ति छापकर रुकना चाहिए: 2। उसे आपसे टाइप नहीं माँगना चाहिए। अगर टर्मिनल कीबोर्ड इनपुट का इंतज़ार करे, किसी फ़ाइल में पुराने अभ्यास का nextLine कॉल अभी बचा है। उस कॉल को हटाएँ और निर्माण, तीन add पंक्तियाँ, और System.out.println(tags.size()); रखें।
रन एक बार घूमें। Java Bin.main से शुरू होता है। import पहले ही बता चुका है आप कौन सा HashSet चाहते हैं। new पंक्ति खाली set बनाती है। पहला add oak रखता है। दूसरा pine रखता है। तीसरा add("oak") देखता है oak पहले से है और गिनती नहीं बढ़ाता। size() की छपाई 2 लिखती है। स्क्रीन 2 दिखाती है। और कुछ नहीं छपना चाहिए। अगर आप 3 देखें, आप यह HashSet फ़ाइल नहीं चला रहे, या तीसरा अलग शब्द जैसे elm जोड़ा है। अगर leaf दिखे, अभी Desk का HashMap डेमो चल रहा है — java Bin पर जाएँ। अगर [oak, pine] दिखे आपने size() की जगह पूरा set छापा; इस पहली शिक्षण फ़ाइल के लिए size छपाई रखें।
अगर javac कहे कि HashSet नहीं मिला, import पंक्ति गायब है, गलत लिखी है, या public class Bin के बाद है। import java.util.HashSet; को वर्ग पंक्ति के ऊपर ले जाएँ। अगर बिना उद्धरण tags.add(oak); लिखें, javac oak को गायब नाम मानता है। उद्धरण रखें। इस पृष्ठ पर HashSet पर put न कॉल करें — वह नाम HashMap का है।

contains से पूछें

दूसरी Bin फ़ाइल उन्हीं पहले दो adds के बाद जाँचती है कि oak set में है या नहीं।

Bin contains oak

java
import java.util.HashSet;

public class Bin {
    public static void main(String[] args) {
        HashSet<String> tags = new HashSet<String>();
        tags.add("oak");
        tags.add("pine");
        System.out.println(tags.contains("oak"));
    }
}

उस दूसरी फ़ाइल को उसी तरह कंपाइल और चलाएँ। स्क्रीन true दिखाती है। कॉल contains("oak") पूछती है कि वह मान set में बैठा है या नहीं। यह boolean लौटाती है। अगर केवल oak और pine जोड़ने के बाद contains("elm") पूछें, स्क्रीन false दिखाएगी — वह वैध है, पर रखी दूसरी फ़ाइल "oak" इस्तेमाल करती है ताकि स्क्रीन true हो।
इस पृष्ठ पर set पर लूप को ज़रूरी न बनाएँ। बाद का पृष्ठ — iterating — संग्रहों पर चलता है। यहाँ add, size, और contains के साथ रहें।

HashMap के साथ साथ

एक छोटी तालिका अंतर साफ़ रखती है।

📊 HashSet vs HashMap

Piece On this page
store tags.add("oak"); — value only
duplicate second add("oak") does not grow size
read check tags.contains("oak") → true
HashMap leftover put / get — not this page’s path
तालिका सिर्फ़ याद दिलाने के लिए है। जो टाइप किए टुकड़े आप रखते हैं वे HashSet import, निर्माण पंक्ति, add कॉल, size(), और contains हैं।

HashMap और ArrayList से तुलना

HashMap पृष्ठ पर put और get कुंजी इस्तेमाल करते थे। इस पृष्ठ पर add और contains स्वयं मान इस्तेमाल करते हैं। बची Desk फ़ाइल जो leaf छापती है अलग पाठ है। इस पृष्ठ के लिए HashSet<String> tags और size डेमो जो 2 छापता है रखें।
एक ArrayList एक ही शब्द दो बार रख सकता है। एक HashSet उस शब्द के दूसरे समान add से नहीं बढ़ता। वही अद्वितीयता इस पाठ का बिंदु है। Bin डेमो में tags.get(0) न मिलाएँ — इस पृष्ठ पर set सूची स्लॉट संख्याएँ इस्तेमाल नहीं करते।
जब पुरानी Desk.java या Rack.java फ़ाइलें पास हों, उन्हें छोड़ दें या तभी हटाएँ जब वे भ्रमित करें कि कौन सा वर्ग चला रहे हैं। इस पाठ की HashSet फ़ाइल कंपाइल करने के बाद java Bin चलाएँ।

iterating के लिए क्या बचता है

यह पृष्ठ अद्वितीय मानों का set खोलता है। अगला पृष्ठ संग्रहों को लूप से चलाता है। यहाँ add, size, और contains के साथ रहें। इस पृष्ठ पर set पर for-each को ज़रूरी न बनाएँ; पाठ का लक्ष्य अद्वितीयता और size() से स्क्रीन 2 है।

iterating से पहले

आप java.util.HashSet import कर सकते हैं, HashSet<String> tags बना सकते हैं, oak, pine, और फिर oak जोड़ सकते हैं, फिर tags.size() छापकर 2 देख सकते हैं। दूसरी फ़ाइल tags.contains("oak") छापकर true दिखा सकती है। हर रखे डेमो के लिए Bin.java कंपाइल करें और java Bin चलाएँ। set ने अद्वितीय मान रखे। अगला पृष्ठ iterating है, जहाँ आप संग्रह के मान एक-एक करके चलते हैं।
import वर्ग के ऊपर रखें। size डेमो में डुप्लिकेट add("oak") रखें ताकि गिनती 2 रहे। boolean जाँच के लिए contains रखें। ये आदतें आगे बढ़ने से पहले इस पृष्ठ का चेकपॉइंट हैं। जब दोहराए oak के साथ तीन adds के बाद size() 2 दिखाए, HashSet ने इस पाठ का काम कर दिया और आप अगले विषय के लिए तैयार हैं।

🧠 अपने ज्ञान की परीक्षा करें

शुरू करने के लिए तैयार

अपने ज्ञान की परीक्षा करें

इस इंटरैक्टिव क्विज़ के साथ अपनी चुनौती लें और देखें कि आप विषय को कितनी अच्छी तरह समझते हैं

❓
6
प्रश्न
🎯
70%
पास करने के लिए
♾️
∞
समय
🔄
∞
प्रयास

📝 निर्देश

  • हर प्रश्न को ध्यान से पढ़ें
  • हर प्रश्न के लिए सबसे अच्छा उत्तर चुनें
  • आप जितनी बार चाहें क्विज़ दोबारा दे सकते हैं
  • आपकी प्रगति शीर्ष पर दिखाई जाएगी