hashset java tutorial with programming examples
यह ट्यूटोरियल समझाता है कि जावा में हैशसेट क्या है, हैशसेट तरीके, इसे कैसे लागू करें और इसके माध्यम से और अन्य संबंधित अवधारणाओं को प्रोग्रामिंग उदाहरणों की मदद से लागू करें:
हैशसेट एक संग्रह है जो वस्तुओं को संग्रहीत करता है। Java में HashSet को java.util पैकेज के 'HashSet' वर्ग का उपयोग करके लागू किया गया है।
यह वर्ग एक सेट इंटरफ़ेस लागू करता है। यह HashTable का उपयोग करता है जो भंडारण के लिए एक HashMap उदाहरण है।
=> यहाँ जावा शुरुआती गाइड पर एक नज़र रखना।
आप क्या सीखेंगे:
जावा हैशसेट
हशसेट की कुछ विशेषताएँ नीचे दी गई हैं:
- एक सेट इंटरफ़ेस को लागू करता है जिसमें एक आंतरिक संरचना के रूप में हैशटेबल है। HashTable, बदले में, एक HashMap उदाहरण है।
- यह तत्वों के क्रम को संरक्षित नहीं करता है। तत्वों को यादृच्छिक क्रम में संग्रहीत किया जाता है।
- हैशसेट डुप्लिकेट मानों की अनुमति नहीं देता है।
- सेट इंटरफ़ेस से अलग एक क्लोन करने योग्य और सीरियल इंटरफ़ेस लागू करता है।
- हम हशसेट में शून्य मान रख सकते हैं।
हैशसेट क्लास पदानुक्रम
हशसेट वर्ग की पदानुक्रम नीचे दी गई है:
जैसा कि ऊपर की आकृति में दिखाया गया है, हैशसेट क्लास ने एब्सट्रैक्ट क्लास का विस्तार किया है जो बदले में सेट इंटरफ़ेस को लागू करता है। सेट इंटरफ़ेस संग्रह इंटरफ़ेस को इनहेरिट करता है जो बदले में Iterable इंटरफ़ेस का विस्तार करता है।
जावा 8 रिलीज ने एक नया तरीका पेश किया ‘स्प्लिटरेटर’ हैशसेट में जो एक विफल-तेज स्प्लिटर बनाता है जो हैशसेट के तत्वों पर देर से बाध्यकारी करता है।
हैशसेट वर्ग की सामान्य घोषणा है:
सार्वजनिक वर्ग हैशसेट एब्सट्रैक्ट लागू सेट सेट करता है,
क्लोन करने योग्य, सीरियल करने योग्य
हससेट आयात करें
हम नीचे दिखाए अनुसार आयात विवरण का उपयोग करके कार्यक्रम में हैशसेट कार्यक्षमता को शामिल कर सकते हैं:
आयात java.util.HashSet;
या
आयात java.util। *;
जावा में हैशसेट की घोषणा करें
हम नीचे दिए गए अनुसार जावा में हैशसेट ऑब्जेक्ट बना सकते हैं:
HashSet h = new HashSet ();
हैशसेट क्लास ऑब्जेक्ट बनाने के लिए निम्न कंस्ट्रक्टर प्रदान करता है।
कंस्ट्रक्टर प्रोटोटाइप | विवरण | |
---|---|---|
हटाना | बूलियन निकालें (ऑब्जेक्ट ओ) | दिए गए तत्व ओ को हैशसेट से हटा देता है यदि वह हैशसेट का हिस्सा है। |
हैशसेट () | HashSet के लिए डिफ़ॉल्ट निर्माता | |
हैशसेट (अंतर क्षमता) | दी गई 'क्षमता' के साथ एक हैशसेट ऑब्जेक्ट का निर्माण करता है। | |
हैशसेट (अंतर क्षमता, फ्लोट लोडफैक्टर) | दी गई and क्षमता ’और or लोडफ़ैक्टर’ के साथ एक हैशसेट ऑब्जेक्ट बनाता है। | |
हैशसेट (संग्रह सी) | दिए गए संग्रह से एक HashSet ऑब्जेक्ट का निर्माण करें। |
जैसा कि उपरोक्त तालिका में दिखाया गया है, डिफ़ॉल्ट कंस्ट्रक्टर के अलावा, यह वर्ग उन कंस्ट्रक्टरों को भी प्रदान करता है जो क्षमता और भारोत्तोलक लेते हैं और एक अन्य संग्रह इसके तर्कों के रूप में। हम इनमें से किसी भी निर्माणकर्ता का उपयोग करके इस वर्ग की वस्तुएँ बना सकते हैं।
हैशसेट शुरू करें
निम्नलिखित जावा कोड हैशसेट क्लास ऑब्जेक्ट की घोषणा और आरंभीकरण को दर्शाता है। इस कार्यक्रम में, हम एक ArrayList से HashSet क्लास ऑब्जेक्ट बनाते हैं। प्रारंभ में, हम ArrayList बनाते हैं और आरंभ करते हैं और फिर इस ArrayList का उपयोग एक HashSet ऑब्जेक्ट बनाने और आरंभ करने के लिए करते हैं।
import java.util.*; class Main{ public static void main(String args()){ //declare and initialize ArrayList ArrayList<String> myList=new ArrayList<String>(); myList.add('Red'); myList.add('Green'); myList.add('Blue'); //Create a HashSet and provide ArrayList in its constructor HashSet<String> mySet=new HashSet(myList); mySet.add('Yellow'); //print the HashSet System.out.println('The HashSet contents:'); Iterator<String> i=mySet.iterator(); while(i.hasNext()) { System.out.print(i.next() + ' '); } } }
आउटपुट:
HashSet जावा में आंतरिक रूप से कैसे काम करते हैं?
आंतरिक रूप से, इसे हैशटेबल का उपयोग करके कार्यान्वित किया जाता है। हैशटेबल हाशप का एक उदाहरण है। लेकिन हाशपैप कुंजी-मूल्य जोड़े का एक संग्रह है। तो हम HashSet को HashMap में कैसे स्टोर करते हैं?
HashSet के ऑब्जेक्ट मान HashMap की कुंजी हैं।
जावा हैशसेट उदाहरण
आइए जावा में हैशसेट का एक विस्तृत उदाहरण देखें।
import java.util.*; class Main{ public static void main(String args()){ //Create a HashSet and add elements to it HashSet<String> mySet=new HashSet<String>(); mySet.add('Blue'); mySet.add('Green'); mySet.add('Blue'); mySet.add('Green'); mySet.add('Red'); mySet.add('Brown'); mySet.add('Yellow'); //Iterate through the HashSet and print its elements System.out.println('HashSet contents:'); Iterator<String> itr=mySet.iterator(); while(itr.hasNext()){ System.out.print(itr.next() + ' '); } } }
आउटपुट:
यहां, हम HashSet ऑब्जेक्ट बनाने के लिए डिफ़ॉल्ट कंस्ट्रक्टर का उपयोग करते हैं। फिर हम हस्सेट में तत्वों (रंगों) को जोड़ते हैं। अगला, हम HashSet के माध्यम से पार करने और सामग्री प्रिंट करने के लिए एक पुनरावृत्ति का उपयोग करते हैं।
हैशसेट इटरेटर
Java में, HashSet को दो तरीकों से प्रस्तुत या प्रसारित किया जा सकता है जैसा कि नीचे चर्चा की गई है।
इटरेटर का उपयोग किए बिना
यहाँ, हम हैशसेट पर चलने वाले को परिभाषित नहीं करते हैं। इसके बजाय, हम एक फॉर्च लूप का उपयोग करते हैं। निम्न प्रोग्राम एक फॉरेस्ट लूप का उपयोग करके हैशसेट के ट्रावेल को दर्शाता है।
import java.util.HashSet; import java.util.Set; class Main{ public static void main(String() args) { // Create a HashSet Set<String> cities_HashSet = new HashSet<String>(); //Initialize HashSet with elements cities_HashSet.add('Mumbai'); cities_HashSet.add('Delhi'); cities_HashSet.add('Pune'); cities_HashSet.add('Chennai'); cities_HashSet.add('Bangaluru'); //use foreach loop to iterate through the HashSet System.out.println('HashSet contents:'); for (String city : cities_HashSet) { System.out.print(city + ' '); } } }
आउटपुट:
इटरेटर का उपयोग करना
पुनरावृति का अगला तरीका एक पुनरावृत्त का उपयोग कर रहा है। यहां, हम हाशसेट वर्ग के लिए एक पुनरावृत्त को परिभाषित करते हैं और फिर इसके माध्यम से आगे बढ़ते हैं।
निम्नलिखित कार्यक्रम इस दृष्टिकोण को दर्शाता है।
import java.util.HashSet; import java.util.Set; import java.util.Iterator; class Main{ public static void main(String() args) { // Create a HashSet Set<String> cities_HashSet = new HashSet<String>(); //Initialize HashSet with elements cities_HashSet.add('Mumbai'); cities_HashSet.add('Delhi'); cities_HashSet.add('Pune'); cities_HashSet.add('Chennai'); cities_HashSet.add('Bangaluru'); //use iterator to iterate through the HashSet System.out.println('HashSet contents using Iterator:'); Iterator<String> iter = cities_HashSet.iterator(); while(iter.hasNext()){ System.out.print(iter.next() + ' '); } } }
आउटपुट:
हैशसेट मेथड्स / एपीआई
निम्न तालिका हाशसेट वर्ग द्वारा प्रदान की गई विधियों को दिखाती है। हमने प्रत्येक विधि के लिए प्रोटोटाइप और विवरण प्रदान किया है। जैसा कि देखा गया है, हमारे पास बुनियादी कार्यों जैसे कि ऐड, रिमूव, साइज आदि के साथ-साथ अन्य तरीकों के लिए सामग्री, शून्यता, पुनरावृत्ति, स्प्लिटरेटर इत्यादि की जांच करने के तरीके हैं।
तरीका | विधि प्रोटोटाइप | विवरण |
---|---|---|
जोड़ना | बूलियन ऐड (E e) | पहले से मौजूद न होने पर तत्व ई को हैशसेट में जोड़ता है। |
स्पष्ट | शून्य स्पष्ट () | HashSet से सभी तत्वों को निकालता है या हटाता है |
क्लोन | ऑब्जेक्ट क्लोन () | इसका उपयोग इस हैशसेट उदाहरण की उथली प्रतिलिपि को वापस करने के लिए किया जाता है: तत्व स्वयं क्लोन नहीं किए जाते हैं। |
शामिल | बूलियन होता है (ऑब्जेक्ट ओ) | जाँचता है कि क्या हैशसेट में दी गई वस्तु ओ है और यदि हाँ तो सही है। |
खाली है | बूलियन इम्प्टी () | जाँचता है कि क्या हशसेट खाली है। सही है अगर हाँ |
इटरेटर | इटरेटर इटरेटर () | एक पुनरावर्तक लौटाता है जिसका उपयोग हैशसेट को पार करने के लिए किया जाता है। |
आकार | Int आकार () | हैशसेट में मौजूद तत्वों का आकार या संख्या लौटाता है। |
फाड़नेवाला | स्प्लिटरेटर स्प्लिटरेटर () | हैशसेट का पता लगाने के लिए रिटर्न फास्ट-फास्ट और लेट-बाइंडिंग स्प्लिटेटर। यह विधि जावा 8 में पेश की गई थी। |
हमने हाशसेट वर्ग द्वारा प्रदान की गई विधियों का वर्णन किया है, अब एक उदाहरण लागू करते हैं जो कक्षा के प्रमुख तरीकों को प्रदर्शित करता है।
नीचे जावा प्रोग्राम इस वर्ग के तरीकों को प्रदर्शित करता है।
import java.util.*; class Main{ public static void main(String args()){ //create a HashSet and initialize it HashSet<String> colors_set=new HashSet<String>(); colors_set.add('Red'); colors_set.add('Green'); colors_set.add('Blue'); colors_set.add('Cyan'); System.out.println('Initial HashSet: '+colors_set); //remove() method => remove specified element colors_set.remove('Red'); System.out.println('
HashSet after remove(Red): '+colors_set); //declare and initialize another list HashSet<String> colors_hash=new HashSet<String>(); colors_hash.add('Yellow'); colors_hash.add('Magenta'); //addAll() method => add another HashSet to existing colors_set.addAll(colors_hash); System.out.println('
HashSet after add(colors_hash): '+colors_set); //removeAll() method => remove all elements specified in the argument colors_set.removeAll(colors_hash); System.out.println('
HashSet after removeAll(colors_hash) method: '+colors_set); //removeIf() => remove if given condition is fulfilled colors_set.removeIf(str->str.contains('Green')); System.out.println('
HashSet after removeIf(contains(Green)) method: '+colors_set); //clear() => delete all elements from the HashSet colors_set.clear(); System.out.println('
HashSet after clear() method: '+colors_set); } }
आउटपुट:
कन्वर्ट हैशसेट को ऐरे में
हम दिए गए HashSet को एक अरै में बदलने के लिए HashSet की toArray () विधि का उपयोग कर सकते हैं। ध्यान दें कि एरे का डेटा प्रकार और आकार हशसेट से मेल खाना चाहिए।
निम्न जावा प्रोग्राम इस रूपांतरण को दिखाता है।
import java.util.HashSet; class Main{ public static void main(String() args) { // Create a HashSet & inintialize it HashSet<String> num_HashSet = new HashSet<String>(); num_HashSet.add('One'); num_HashSet.add('Two'); num_HashSet.add('Three'); num_HashSet.add('Four'); // Print HashSet contents System.out.println('HashSet contents: '+ num_HashSet); // Declare an array with size = HashSet size String() numArray = new String(num_HashSet.size()); //use toArray method to convert HashSet to an array num_HashSet.toArray(numArray); // Print Array System.out.println('Array from HashSet: '); for(String val : numArray){ System.out.print(val + ' '); } } }
आउटपुट:
एक हैशसेट को क्रमबद्ध करें
हम जावा में एक हैशसेट को सॉर्ट कर सकते हैं। हैशसेट तत्वों को मूल रूप से क्रमबद्ध नहीं किया जाता है क्योंकि यह तत्वों के क्रम को बनाए नहीं रखता है। हम जावा में हैशसेट को सॉर्ट करने के लिए दो दृष्टिकोणों का पालन कर सकते हैं।
कलेक्शंस.सोर्ट () विधि का उपयोग करना
इस दृष्टिकोण में, हम HashSet को एक सूची में परिवर्तित करते हैं। फिर, हम सूची को सॉर्ट करने के लिए Collections.sort () विधि का उपयोग करते हैं। यह सूची तब छपी है।
import java.util.*; public class Main { public static void main(String args()) { // Create a HashSet & initialize it HashSet<String> cities_HashSet = new HashSet<String>(); cities_HashSet.add('Pune'); cities_HashSet.add('Mumbai'); cities_HashSet.add('Bangaluru'); cities_HashSet.add('Hyderabad'); System.out.println('Original HashSet: ' + cities_HashSet); // Convert HashSet to ArrayList List<String> cities_list = new ArrayList<String>(cities_HashSet); // Use Collections.sort () method to sort the list Collections.sort(cities_list); // Print the Sorted ArrayList (HashSet) System.out.println('Sorted HashSet:'+ cities_list); } }
आउटपुट:
सी + + में क्या है
हैशसेट को ट्रीसेट में परिवर्तित करके
इस दृष्टिकोण का उपयोग करके हम हैशसेट को ट्रीसेट में परिवर्तित करते हैं। ट्रीसेट तत्वों के क्रम को बनाए रखता है। इसलिए जब HashSet को TreeSet में कवर किया जाता है, तो तत्वों को क्रम में रखा जाता है।
निम्न जावा प्रोग्राम इस रूपांतरण को दिखाता है जिससे हैशसेट को सॉर्ट किया जाता है।
import java.util.*; public class Main { public static void main(String args()) { // Create and initialize a HashSet HashSet<String> cities_HashSet = new HashSet<String>(); cities_HashSet.add('Pune'); cities_HashSet.add('Mumbai'); cities_HashSet.add('Bangaluru'); cities_HashSet.add('Hyderabad'); System.out.println('Original HashSet:'+ cities_HashSet); // Sort HashSet using TreeSet TreeSet<String> treeSet = new TreeSet<String>(cities_HashSet); // Print the sorted HashSet System.out.println('HashSet sorted using using TreeSet:' + treeSet); } }
आउटपुट:
आइए अब हैशसेट और हाशपेज़ के बीच के कुछ अंतरों पर चर्चा करें। हम हाशसेट और ट्रीसेट के बीच अंतरों पर भी चर्चा करेंगे।
HashSet Vs HashMap
निम्न तालिका HashSet और HashMap के बीच प्रमुख अंतर दिखाती है।
हैशसेट | हैश मैप |
---|---|
Add () विधि का उपयोग करके ऑब्जेक्ट जोड़े जाते हैं। | HashMap पुट-मूल्य जोड़े को जोड़ने के लिए पुट () विधि का उपयोग करता है। |
उपकरण इंटरफ़ेस सेट करें। | मानचित्र मानचित्र को लागू करता है। |
किसी विशेष प्रकार की वस्तुओं को संग्रहीत करता है। | डेटा के कुंजी-मूल्य जोड़े स्टोर करें। |
वस्तुओं के डुप्लिकेट मानों की अनुमति नहीं देता है। | डुप्लिकेट मानों की अनुमति देता है, लेकिन डुप्लिकेट कुंजियों का नहीं। |
एकल शून्य मान हो सकता है। | एकल नल कुंजी और एकाधिक नल मान की अनुमति देता है। |
डेटा संग्रहीत करने के लिए आंतरिक रूप से हैशपॉइंट ऑब्जेक्ट का उपयोग करता है। | डेटा स्टोर करने के लिए हैशिंग तकनीक का उपयोग करता है। |
जब हाशप की तुलना में धीमी है। | HashMap तेजी से होता है। |
हैशसेट बनाम ट्रीसेट
नीचे सूचीबद्ध हैशसेट और ट्रीसेट के बीच अंतर हैं।
हैशसेट | ट्रीसेट |
---|---|
सीमित कार्यक्षमता है। | विभिन्न कार्यों की पेशकश करने वाले कार्यों को प्रदान करता है और हैशसेट की तुलना में ट्रीसेट का उपयोग करना आसान बनाता है। |
यह तत्व आदेश को बनाए नहीं रखता है। वस्तुओं को यादृच्छिक क्रम में संग्रहीत करता है। | तत्वों के प्राकृतिक क्रम को बनाए रखता है। |
यह अशक्त मूल्यों के लिए अनुमति देता है। | इसमें अशक्त मूल्य नहीं हो सकते। |
बेहतर प्रदर्शन देता है क्योंकि यह बुनियादी कार्यों के लिए निरंतर समय लेता है। | बुनियादी कार्यों के लिए लॉग एन समय लागत प्रदान करता है। |
ट्रीसेट की तुलना में बहुत तेज है। | ट्रीसेट धीमा है। |
HashMap का उपयोग करके आंतरिक रूप से कार्यान्वित किया गया। | ट्रीसेट को नेविगेबल ट्रेमेप का उपयोग करके आंतरिक रूप से लागू किया जाता है। |
तुलना के लिए बराबर () विधि का उपयोग करता है। | तुलना के लिए ComparTo () विधि का उपयोग करता है। |
बार बार पूछे जाने वाले प्रश्न
Q # 1) जावा में हैशसेट कैसे काम करता है?
उत्तर: Java में HashSet ऑब्जेक्ट को स्टोर करने के लिए HashMap का उपयोग करता है। जब एक HashSet ऑब्जेक्ट बनाया जाता है, तो एक HashMap ऑब्जेक्ट बनाया जाता है। HashSet में दर्ज किए गए तत्व या ऑब्जेक्ट को HashMap में कुंजी के रूप में संग्रहीत किया जाता है।
Q # 2) क्या HashSet को Java में आदेश दिया गया है?
उत्तर: नहीं, यह जावा में ऑर्डर नहीं किया गया है। यह यादृच्छिक क्रम में तत्वों को संग्रहीत करता है।
Q # 3) क्या हैशसेट शून्य होने की अनुमति देता है?
उत्तर: हां, यह एकल अशक्त मूल्य की अनुमति देता है। इसका मतलब यह है कि केवल एक तत्व या वस्तु शून्य हो सकती है और सभी नहीं।
क्यू # 4) जावा में हैशसेट का उपयोग क्यों किया जाता है?
उत्तर: इसका उपयोग जावा में की-वैल्यू पेयर को स्टोर करने के लिए किया जाता है। यह इस अपवाद के साथ हैशटेबल के समान है कि हैशटैस असंबद्ध है और हैशटेबल के विपरीत यह अशक्त मूल्यों और एक अशक्त कुंजी की अनुमति देता है। हैशसेट का आदेश नहीं दिया गया है और इसका उपयोग अनियंत्रित वस्तुओं को संग्रहीत करने के लिए किया जा सकता है या जब वस्तुओं के आदेश की आवश्यकता नहीं होती है।
Q # 5) क्या HashSet Java में सिंक्रनाइज़ है?
उत्तर: HashSet जावा में सिंक्रनाइज़ नहीं है। इसके अलावा, यह धागा-सुरक्षित नहीं है। लेकिन हम इसे सिंक्रनेट () विधि का उपयोग करके सिंक्रनाइज़ कर सकते हैं।
निष्कर्ष
HashSet एक संग्रह है जिसमें ऐसी वस्तुएँ हैं जो यादृच्छिक क्रम में हैं। HashSet क्लास जो कि HashSet को Java में कार्यान्वित करता है, HashTable का उपयोग करता है जो HashMap को लागू करता है।
हमने हैशसेट वर्ग द्वारा प्रदान की गई विधियों के साथ-साथ हैशसेट की घोषणा और आरंभ को देखा।
=> आसान जावा प्रशिक्षण श्रृंखला के माध्यम से पढ़ें।
अनुशंसित पाठ
- जावा डबल - प्रोग्रामिंग उदाहरणों के साथ ट्यूटोरियल
- जावा फ्लोट ट्यूटोरियल प्रोग्रामिंग उदाहरण के साथ
- जावा रिवर्स स्ट्रिंग: प्रोग्रामिंग उदाहरणों के साथ ट्यूटोरियल
- ट्रीसेट इन जावा: प्रोग्रामिंग उदाहरणों के साथ ट्यूटोरियल
- जावा ट्यूटोरियल फॉर बिगिनर्स: 100+ हैंड्स-ऑन जावा वीडियो ट्यूटोरियल
- जावा स्ट्रिंग में () उदाहरण के साथ विधि ट्यूटोरियल शामिल हैं
- जावा में ट्रीमैप - ट्यूटोरियल जावा ट्रीपैप उदाहरणों के साथ
- जावा में दांतेदार सरणी - उदाहरणों के साथ ट्यूटोरियल