हम इस ट्यूटोरियल में सीखने वाले है कि जावा कलेक्शंस फ्रेमवर्क (Java Collections Framework in Hindi) और हम इसे कैसे इस्तमाल कर सकते हैं? जावा 2 से पहले जावा वस्तुओं के समूहों को स्टोर और मैनिपुलेट करने के लिए डिक्शनरी, वेक्टर, स्टैक और प्रॉपर्टीज जैसे तदर्थ वर्ग प्रदान करता था। हालांकि ये classes काफी उपयोगी थीं, लेकिन उनमें एक केंद्रीय, एकीकृत विषय का अभाव था। इस प्रकार, जिस तरह से आपने वेक्टर का उपयोग किया था, वह उस तरीके से अलग था, जिसमें आपने गुणों का उपयोग किया था।
Table of Contents
Collection ढांचे को कई लक्ष्यों को पूरा करने के लिए डिज़ाइन किया गया था जैसे –
ढांचे को उच्च-प्रदर्शन होना था। मौलिक Collection (गतिशील सरणियाँ, लिंक्ड सूचियाँ, पेड़ और हैशटेबल्स) के लिए implementations अत्यधिक कुशल होना था।
ढांचे को विभिन्न प्रकार के Collection को समान तरीके से और उच्च स्तर की अंतःक्रियाशीलता के साथ काम करने की अनुमति देनी थी।
ढांचे को Collection को आसानी से विस्तारित और/या अनुकूलित करना था।
इसके लिए संपूर्ण Collection ढांचे को मानक इंटरफेस के एक सेट के आसपास डिज़ाइन किया गया है। इन इंटरफेस के लिंक्डलिस्ट, हैशसेट और ट्रीसेट जैसे कई मानक implementations प्रदान किए जाते हैं, जिनका आप जैसा है उपयोग कर सकते हैं और यदि आप चाहें तो अपना खुद का Collection भी लागू कर सकते हैं।
एक Collection ढांचा Collection का प्रतिनिधित्व करने और collections करने के लिए एक एकीकृत वास्तुकला है। सभी Collection ढांचे में निम्नलिखित शामिल हैं –
इंटरफेस (Interfaces)− ये Abstract डेटा प्रकार हैं जो Collection का प्रतिनिधित्व करते हैं। इंटरफेस Collection को उनके प्रतिनिधित्व के विवरण से स्वतंत्र रूप से collections करने की अनुमति देते हैं। वस्तु-उन्मुख भाषाओं में, इंटरफेस आम तौर पर एक पदानुक्रम बनाते हैं।
इम्प्लिमेंटेशन, यानी क्लासेस (Implementations, i.e., Classes)− ये कलेक्शन इंटरफेस के ठोस इम्प्लीमेंटेशन हैं। संक्षेप में, वे पुन: प्रयोज्य डेटा संरचनाएं हैं।
एल्गोरिथम (Algorithms) − ये वे तरीके हैं जो Collection इंटरफेस को लागू करने वाली वस्तुओं पर उपयोगी संगणना करते हैं, जैसे खोज और छँटाई। एल्गोरिदम को बहुरूपी कहा जाता है: अर्थात्, एक ही विधि का उपयोग उपयुक्त Collection इंटरफ़ेस के कई अलग-अलग implementations पर किया जा सकता है।
Collection के अलावा framework कई Map इंटरफेस और कक्षाओं को परिभाषित करती है। Map स्टोर कुंजी/मूल्य जोड़े। यद्यपि शब्द के समुचित प्रयोग में Map Collection नहीं होते हैं, परन्तु वे संग्रहों के साथ पूर्णतः एकीकृत होते हैं।
Collection इंटरफेस (The Collection Interfaces in Hindi)
Collection ढांचा कई इंटरफेस को परिभाषित करता है। यह खंड प्रत्येक इंटरफ़ेस का अवलोकन प्रदान करता है –
Sr.No. | Interface & Description |
1 | The Collection Interface यह आपको वस्तुओं के समूहों के साथ काम करने में सक्षम बनाता है; यह Collection पदानुक्रम के शीर्ष पर है। |
2 | The List Interface यह Collection का विस्तार करता है और सूची का एक उदाहरण तत्वों के एक आदेशित Collection को संग्रहीत करता है। |
3 | The Set यह Collection को सेट को संभालने के लिए विस्तारित करता है, जिसमें अद्वितीय तत्व शामिल होने चाहिए। |
4 | The SortedSet यह सेट को सॉर्ट किए गए सेट को संभालने के लिए बढ़ाता है। |
5 | The Map यह मूल्यों के लिए अद्वितीय कुंजियों को मैप करता है। |
6 | The Map.Entry यह मानचित्र में एक तत्व (एक कुंजी/मान जोड़ी) का वर्णन करता है। यह मानचित्र का एक आंतरिक वर्ग है। |
7 | The SortedMap यह मानचित्र का विस्तार करता है ताकि कुंजियों को आरोही क्रम में बनाए रखा जा सके। |
8 | The Enumeration यह विरासत इंटरफ़ेस उन तरीकों को परिभाषित करता है जिनके द्वारा आप वस्तुओं के Collection में तत्वों की गणना कर सकते हैं (एक समय में एक प्राप्त कर सकते हैं)। इस लीगेसी इंटरफ़ेस का स्थान Iterator ने ले लिया है। |
Collection वर्ग (The Collection Classes in Hindi)
जावा Collection इंटरफेस को लागू करने वाले मानक Collection वर्गों का एक सेट प्रदान करता है। कुछ वर्ग पूर्ण implementations प्रदान करते हैं जिनका उपयोग किया जा सकता है और अन्य Abstract वर्ग हैं, कंकाल implementations प्रदान करते हैं जो ठोस Collection बनाने के लिए शुरुआती बिंदुओं के रूप में उपयोग किए जाते हैं।
मानक Collection वर्गों को निम्नलिखित तालिका में संक्षेपित किया गया है –
Sr.No. | Class & Description |
1 | AbstractCollection अधिकांश Collection इंटरफ़ेस को लागू करता है। |
2 | AbstractList Abstract Collection का विस्तार करता है और अधिकांश सूची इंटरफ़ेस को लागू करता है। |
3 | AbstractSequentialList एक Collection द्वारा उपयोग के लिए Abstract सूची का विस्तार करता है जो इसके तत्वों की random पहुंच के बजाय अनुक्रमिक उपयोग करता है। |
4 | LinkedList Abstract अनुक्रमिक सूची का विस्तार करके एक लिंक की गई सूची को लागू करता है। |
5 | ArrayList Abstract सूची का विस्तार करके एक गतिशील सरणी को लागू करता है। |
6 | AbstractSet Abstract Collection का विस्तार करता है और अधिकांश सेट इंटरफ़ेस को लागू करता है। |
7 | HashSet हैश टेबल के साथ उपयोग के लिए Abstract सेट को बढ़ाता है। |
8 | LinkedHashSet सम्मिलन-क्रम पुनरावृत्तियों की अनुमति देने के लिए हैशसेट का विस्तार करता है। |
9 | TreeSet एक पेड़ में संग्रहीत एक सेट को लागू करता है। Abstract सेट बढ़ाता है। |
10 | AbstractMap अधिकांश मानचित्र इंटरफ़ेस को लागू करता है। |
11 | HashMap हैश टेबल का उपयोग करने के लिए एब्सट्रैक्टमैप को बढ़ाता है। |
12 | TreeMap एक पेड़ का उपयोग करने के लिए एब्सट्रैक्टमैप को बढ़ाता है। |
13 | WeakHashMap कमजोर चाबियों के साथ हैश तालिका का उपयोग करने के लिए एब्सट्रैक्टमैप को बढ़ाता है। |
14 | LinkedHashMap सम्मिलन-क्रम पुनरावृत्तियों को अनुमति देने के लिए हैश मैप को बढ़ाता है। |
15 | IdentityHashMap दस्तावेज़ों की तुलना करते समय एब्स्ट्रैक्टमैप का विस्तार करता है और संदर्भ समानता का उपयोग करता है। |
AbstractCollection, AbstractSet, AbstractList, AbstractSequentialList and AbstractMap Map classes उन्हें लागू करने के लिए आवश्यक प्रयास को कम करने के लिए कोर Collection इंटरफेस के कंकाल implementations प्रदान करती हैं।
Java.util द्वारा परिभाषित निम्न विरासत वर्गों पर पिछले अध्याय में चर्चा की गई है –
Sr.No. | Class & Description |
1 | Vector यह एक गतिशील सरणी लागू करता है। यह ArrayList के समान है, लेकिन कुछ अंतरों के साथ। |
2 | Stack स्टैक वेक्टर का एक उपवर्ग है जो एक मानक लास्ट-इन, फर्स्ट-आउट स्टैक को लागू करता है। |
3 | Dictionary डिक्शनरी एक एब्स्ट्रैक्ट क्लास है जो की/वैल्यू स्टोरेज रिपॉजिटरी का प्रतिनिधित्व करता है और मैप की तरह ही संचालित होता है। |
4 | Hashtable हैशटेबल मूल java.util का हिस्सा था और एक शब्दकोश का एक ठोस implementations है। |
5 | Properties गुण हैशटेबल का एक उपवर्ग है। इसका उपयोग उन मानों की सूचियों को बनाए रखने के लिए किया जाता है जिनमें कुंजी एक स्ट्रिंग है और मान भी एक स्ट्रिंग है। |
6 | BitSet एक बिटसेट वर्ग एक विशेष प्रकार की सरणी बनाता है जिसमें बिट मान होते हैं। यह सरणी आवश्यकतानुसार आकार में बढ़ सकती है। |
Collection एल्गोरिदम (The Collection Algorithms in Hindi)
Collection की framework कई एल्गोरिदम को परिभाषित करती है जिन्हें Collection और Map पर लागू किया जा सकता है। इन एल्गोरिदम को Collection वर्ग के भीतर स्थिर विधियों के रूप में परिभाषित किया गया है।
कई विधियाँ ClassCastException को फेंक सकती हैं, जो तब होती है जब असंगत प्रकारों की तुलना करने का प्रयास किया जाता है, या एक UnsupportedOperationException, जो तब होता है जब एक अपरिवर्तनीय Collection को संशोधित करने का प्रयास किया जाता है।
Collection तीन स्थिर चर परिभाषित करते हैं: EMPTY_SET, EMPTY_LIST और EMPTY_MAP। सभी अपरिवर्तनीय हैं।
Sr.No. | Algorithm & Description |
1 | The Collection Algorithms यहाँ सभी एल्गोरिथम implementations की एक सूची है। |
इटरेटर का उपयोग कैसे करें?
अक्सर, आप Collection में तत्वों के माध्यम से साइकिल चलाना चाहेंगे। उदाहरण के लिए, आप प्रत्येक तत्व को प्रदर्शित करना चाह सकते हैं।
ऐसा करने का सबसे आसान तरीका एक पुनरावर्तक को नियोजित करना है, जो एक ऐसी वस्तु है जो या तो Iterator या ListIterator इंटरफ़ेस को लागू करती है।
इटरेटर आपको तत्वों को प्राप्त करने या हटाने के Collection के माध्यम से साइकिल चलाने में सक्षम बनाता है। ListIterator एक सूची के द्विदिश ट्रैवर्सल और तत्वों के संशोधन की अनुमति देने के लिए Iterator का विस्तार करता है।
Sr.No. | Iterator Method & Description |
1 | Using Java Iterator यहां उन सभी विधियों की सूची दी गई है, जो Iterator और ListIterator इंटरफेस द्वारा प्रदान किए गए उदाहरणों के साथ हैं। |
एक comparator का उपयोग कैसे करें?
ट्रीसेट और ट्रीमैप दोनों तत्वों को एक sorted क्रम में संग्रहीत करते हैं। हालाँकि, यह comparator है जो सटीक रूप से परिभाषित करता है कि sorted क्रम का क्या अर्थ है।
यह इंटरफ़ेस हमें किसी दिए गए Collection को कई अलग-अलग तरीकों से sorted करने देता है। साथ ही इस इंटरफ़ेस का उपयोग किसी भी वर्ग के किसी भी उदाहरण को सॉर्ट करने के लिए किया जा सकता है (यहां तक कि उन कक्षाओं को भी जिन्हें हम संशोधित नहीं कर सकते हैं)।
Sr.No. | Iterator Method & Description |
1 | Using Java Comparator यहां उन सभी विधियों की सूची दी गई है, जो तुलनित्र इंटरफ़ेस द्वारा प्रदान किए गए उदाहरणों के साथ हैं। |
सारांश (Summary)
जावा कलेक्शंस फ्रेमवर्क प्रोग्रामर को पहले से पैक किए गए डेटा स्ट्रक्चर्स के साथ-साथ उन्हें collections करने के लिए एल्गोरिदम तक पहुंच प्रदान करता है।
एक Collection एक वस्तु है जो अन्य वस्तुओं के संदर्भ रख सकता है। Collection इंटरफेस उन कार्यों की घोषणा करता है जो प्रत्येक प्रकार के Collection पर किए जा सकते हैं।
Collection ढांचे के वर्ग और इंटरफेस पैकेज java.util में हैं।
हम उम्मीद करते है कि आपको “जावा कलेक्शंस फ्रेमवर्क (Java Collections Framework in Hindi)” से सम्बंधित जानकारी हिंदी में समझ में आयी होंगी यदि आपको बताई गई जानकारी अच्छी लगी हो तो अपने दोस्तों में ऐसे शेयर करे जिससे उनकी भी हेल्प हो सके धन्यवाद!