java collections framework tutorial
यह ट्यूटोरियल संग्रह संग्रह पदानुक्रम, विभिन्न इंटरफेस और JCF के लाभों के साथ-साथ जावा कलेक्शंस फ्रेमवर्क (JCF) का विवरण देता है:
आशा है कि इस पर इन शानदार ट्यूटोरियल शुरुआती के लिए जावा श्रृंखला वास्तव में जावा के अपने ज्ञान को समृद्ध करने में सहायक हैं।
हमारे पिछले ट्यूटोरियल ने इस पर अधिक जानकारी दी जावा में मूल I / O संचालन । इस ट्यूटोरियल में हम जावा कलेक्शंस फ्रेमवर्क (JCF) के बारे में विस्तार से जानेंगे।
जावा कलेक्शंस फ्रेमवर्क (JCF) में इंटरफेस, अमूर्त वर्ग और कक्षाएं शामिल हैं जो वस्तुओं के एक समूह को संग्रहीत और हेरफेर करने के लिए वास्तुकला प्रदान कर सकती हैं।
आप क्या सीखेंगे:
- जावा कलेक्शंस फ्रेमवर्क पर वीडियो ट्यूटोरियल
- निष्कर्ष
जावा कलेक्शंस फ्रेमवर्क पर वीडियो ट्यूटोरियल
जावा में Arraylist का ज्ञान:
वास्तविक समय के उदाहरणों के साथ जावा में इंटरफ़ेस और कतार इंटरफ़ेस सेट करें:
HashMap, TreeMap और HashTable में जावा:
अब तक, हमने ऐसे चर देखे हैं जो विभिन्न प्रकार के डेटा संग्रहीत करते हैं। ये एकवचन इकाइयाँ हैं और बहुत उपयोगी नहीं होती हैं जब आपके पास स्टोर करने और इससे निपटने के लिए भारी मात्रा में डेटा होता है। जैसा कि हम जानते हैं, डेटा कंप्यूटर प्रोसेसिंग का सबसे महत्वपूर्ण घटक है।
आपके एप्लिकेशन को डेटा निकालने और इकट्ठा करने में सक्षम होना चाहिए, उपयोगी जानकारी का पता लगाने के लिए इसे संसाधित करें और इसे पास और फ्रॉस्ट भी करें ताकि इसका उपयोग समाधान तक पहुंचने के लिए कुशलतापूर्वक किया जा सके।
इस सॉफ़्टवेयर की दुनिया में, हम उस डेटा को संग्रहीत करते हैं जिसे किसी विशेष फैशन में संरचित करने की आवश्यकता होती है ताकि सॉफ़्टवेयर प्रोग्राम स्टोर, पढ़ने, प्रक्रिया करने और अंत में परिणामों को आउटपुट करने में सक्षम हों। यह डेटा संरचनाओं का उपयोग करके किया जाता है।
लगभग सभी प्रोग्रामिंग भाषाएं डेटा संरचनाओं का समर्थन करती हैं। डेटा संरचना को डेटा के संरचित प्रतिनिधित्व के रूप में परिभाषित किया जा सकता है। प्रोग्रामिंग भाषा डेटा संरचनाओं में हेरफेर करने के लिए एपीआई (एप्लीकेशन प्रोग्रामिंग इंटरफ़ेस) फ़ंक्शन प्रदान करती है।
कलेक्शन फ्रेमवर्क की आवश्यकता
जावा 1.2 से पहले, जावा प्रोग्रामिंग भाषा ने सरणियों, वैक्टर या हैश टेबल जैसी डेटा संरचनाओं का समर्थन किया था। इन डेटा संरचनाओं पर कार्य करना आसान नहीं था क्योंकि इन डेटा संरचनाओं पर काम करने वाला कोई सामान्य इंटरफ़ेस नहीं था।
प्रोग्रामर को एल्गोरिदम लिखना मुश्किल लगता था जो सभी डेटा संरचनाओं के लिए काम करेगा और एक बड़ी परेशानी थी। एक सामान्य इंटरफ़ेस की आवश्यकता थी जो सभी डेटा संरचनाओं पर लगातार काम करे और कुशलतापूर्वक संचालन भी करे।
बाद में, जावा एक संग्रह ढांचे के साथ आया, जो विभिन्न संरचनाओं से मिलकर कक्षाओं और इंटरफेस का एक समूह है जो डेटा संरचनाओं पर किया जा सकता है।
इस जावा कलेक्शंस ट्यूटोरियल में, हम सामान्य रूप से जावा कलेक्शंस फ्रेमवर्क पर चर्चा करेंगे। हम अपने आगामी ट्यूटोरियल में संग्रह घटकों में से प्रत्येक का पता लगाएंगे।
जावा कलेक्शंस फ्रेमवर्क
इससे पहले कि हम एक जावा कलेक्शंस फ्रेमवर्क को परिभाषित करें, संग्रह का अर्थ और एक रूपरेखा जानने के लिए आइए।
एक संग्रह को वस्तुओं के समूह के रूप में परिभाषित किया जा सकता है। एक संग्रह आमतौर पर एक एकल इकाई है जिसमें एक से अधिक वस्तु होती है। एक फ्रेमवर्क एक सॉफ्टवेयर है जिसमें एक तैयार कार्यात्मक इंटरफ़ेस या वास्तुकला है और इसमें प्रदान किए गए इंटरफ़ेस के साथ उपयोग किए जाने वाले वर्गों और इंटरफेस का एक सेट भी है।
एक संग्रह ढांचे को एक एकीकृत, तैयार-निर्मित वास्तुकला के रूप में परिभाषित किया गया है, जिसमें नीचे की ओर शामिल है।
# 1) एल्गोरिदम
ये ऐसे तरीके या कथन हैं जो एकत्रित डेटा को खोजने, छांटने और संसाधित करने में प्रोग्रामर की सहायता कर सकते हैं। संग्रह इंटरफेसेस, कक्षाओं और एल्गोरिदम के साथ पैक किया हुआ आता है।
संग्रह ढांचे को विरासत में प्राप्त करने वाले अनुप्रयोगों को इन एल्गोरिदम तक पहुंच प्राप्त होती है और पहले से परिभाषित तरीकों और प्रक्रियाओं का उपयोग किया जाता है।
# 2) इंटरफेस
जावा में इंटरफेस कार्यान्वयन के अमूर्त प्रदान करते हैं अर्थात् इंटरफेस का उपयोग करते हुए, उपयोगकर्ता कार्यान्वयन के विवरण से अवगत नहीं है, लेकिन केवल आवेदन लिखने के लिए आवश्यक तरीकों और डेटा को देख सकता है। संग्रह इंटरफ़ेस में कई इंटरफेस हैं जिन्हें प्रोग्रामर द्वारा अपनी कक्षाओं को लिखने के लिए लागू किया जा सकता है।
# 3) कक्षाएं
कलेक्शन फ्रेमवर्क की कक्षाएं डेटा संरचनाएं हैं जिन्हें एक कार्यक्रम में लागू किया जा सकता है। ये कक्षाएं 'संग्रह' इंटरफ़ेस को लागू करती हैं और इस प्रकार संग्रह इंटरफ़ेस की सभी विधियों और परिभाषाओं को प्राप्त करती हैं।
संग्रह का संग्रह वस्तुओं के समूह को संग्रहित करने और हेरफेर करने के लिए उपयोग किया जाता है।
जावा संग्रह ढांचे में उच्च प्रदर्शन वाले एल्गोरिदम होते हैं जो खोज, छंटाई और प्रसंस्करण जैसे मानक संचालन करते हैं। यह लिंक्डलिस्ट, ट्रीसेट और हैशसेट सहित विभिन्न मानक कार्यान्वयन प्रदान करता है जिसके लिए इंटरफेस प्रदान किए जाते हैं।
अगला, जावा संग्रह पदानुक्रम को समझें।
जावा संग्रह पदानुक्रम
जावा संग्रह पदानुक्रम के नीचे दिखाए गए सभी वर्ग और इंटरफ़ेस 'java.util। *' पैकेज के हैं।
जैसा कि ऊपर चित्र में दिखाया गया है, Java Collection Hierarchy में विभिन्न वर्ग और इंटरफेस होते हैं। जैसा कि आप देख सकते हैं, प्रत्येक वर्ग एक इंटरफ़ेस से विरासत में मिला है और सभी कक्षाएं और इंटरफेस, बदले में, एक एकल 'संग्रह' इंटरफ़ेस से विरासत में मिला है।
संग्रह इंटरफ़ेस में कुछ सामान्य तरीकों के बारे में चर्चा करें, साथ ही साथ उपर्युक्त पदानुक्रम में दिखाए गए प्रत्येक वर्गों और इंटरफेस के बारे में संक्षिप्त परिचय के साथ।
संग्रह इंटरफ़ेस
संग्रह इंटरफ़ेस रूट इंटरफ़ेस है। संग्रह ढांचे में सभी कक्षाएं संग्रह इंटरफ़ेस को लागू करती हैं। इसका मतलब है कि हर संग्रह में संग्रह इंटरफ़ेस में घोषित तरीके होंगे।
संग्रह इंटरफ़ेस के कुछ तरीके नीचे दिए गए हैं।
नहीं न | विधि प्रोटोटाइप | विवरण |
---|---|---|
। | डिफ़ॉल्ट बूलियन निष्कासन (पूर्व फ़िल्टर करें) | संग्रह से दिए गए satisfy फ़िल्टर ’को पूरा करने वाले सभी तत्वों को हटा दें। |
एक | सार्वजनिक int आकार () | दिए गए संग्रह में तत्वों की संख्या लौटाता है। |
दो | सार्वजनिक शून्य स्पष्ट () | संग्रह से सभी तत्वों को निकालकर संग्रह को साफ़ करता है। |
३ | सार्वजनिक बूलियन ऐड (E e) | संग्रह में एक तत्व ई सम्मिलित करता है। |
४ | सार्वजनिक बूलियनडाल (संग्रह सी) | संग्रह में c द्वारा दिए गए संग्रह में सभी तत्वों को सम्मिलित करें। |
५ | सार्वजनिक बूलियन हटाने (वस्तु तत्व) | संग्रह से 'तत्व' द्वारा दिया गया तत्व हटाएं। |
६ | सार्वजनिक बूलियन निष्कासन (संग्रह) | संग्रह से ग निकालें। |
। | सार्वजनिक बूलियनअर्टाल (संग्रह सी) | निर्दिष्ट संग्रह c में उन लोगों को छोड़कर संग्रह से सभी तत्व हटाएं। |
९ | सार्वजनिक इटरेटर इटरेटर () | संग्रह के लिए पुनरावृत्त लौटें। |
१० | सार्वजनिक वस्तु () toArray () | संग्रह को एक सरणी में बदलें। |
ग्यारह | सार्वजनिक T () toArray (T () a) | संग्रह को एक निर्दिष्ट रिटर्न प्रकार के साथ एक सरणी में परिवर्तित करें। |
१२ | सार्वजनिक बूलियन हैइमपेट () | अगर संग्रह खाली है या नहीं तो लौटें। |
१३ | सार्वजनिक बूलियन होता है (वस्तु तत्व) | जांचें कि क्या किसी संग्रह में दिए गए तत्व (सर्च ऑपरेशन) हैं। |
१४ | सार्वजनिक बूलियनकंटेनस (संग्रह) | जाँच करें कि क्या संग्रह में इसके अंदर निर्दिष्ट संग्रह c है। |
पंद्रह | डिफ़ॉल्ट स्प्लिटरेटर स्प्लिटरेटर () | एक निर्दिष्ट संग्रह पर विभाजक देता है। |
१६ | सार्वजनिक बूलियन असेंबल (ऑब्जेक्ट एलिमेंट) | दो संग्रहों के मिलान के लिए प्रयुक्त। |
१। | डिफ़ॉल्ट स्ट्रीम समांतर स्ट्रीम () | स्रोत के रूप में संग्रह का उपयोग करके समानांतर धारा लौटाता है। |
१। | डिफ़ॉल्ट स्ट्रीमस्ट्रीम () | स्रोत के रूप में संग्रह का उपयोग करके अनुक्रमिक धारा लौटाता है। |
१ ९ | सार्वजनिक int हैशकोड () | संग्रह का सांख्यिक हैशकोड लौटाता है। |
Iterable इंटरफ़ेस
Iterable इंटरफ़ेस संग्रह ढांचे का आधार इंटरफ़ेस भी है। संग्रह इंटरफ़ेस जो अन्य सभी वर्गों का मूल इंटरफ़ेस है, Iterable इंटरफ़ेस का विस्तार करता है। इसलिए सभी वर्ग एक संग्रह इंटरफ़ेस के साथ-साथ एक Iterable इंटरफ़ेस लागू करते हैं।
Iterable इंटरफ़ेस में केवल एक ही विधि iterator () है जो पुनरावृत्त () लौटाता है जिसका उपयोग आप टाइप T के तत्वों पर पुनरावृति करने के लिए कर सकते हैं।
Iterator iterator ()
Iterator इंटरफ़ेस
Iterator इंटरफ़ेस तत्वों को आगे की दिशा में पुनरावृत्त करने की क्षमता प्रदान करता है।
इस इंटरफ़ेस द्वारा समर्थित विधियाँ निम्नलिखित हैं।
नहीं न | विधि प्रोटोटाइप | विवरण |
---|---|---|
एक | सार्वजनिक वस्तु अगला () | पहले तत्व को वापस करता है और फिर कर्सर को अगले तत्व की ओर इंगित करता है। |
दो | सार्वजनिक बूलियन hasNext () | जाँच करता है कि क्या इट्रेटर में अधिक तत्व हैं। |
३ | सार्वजनिक शून्य हटाने () | उस तत्व को हटाता है जो अंत में पुनरावृत्तिकर्ता द्वारा दिया जाता है। |
सूची इंटरफ़ेस
सूची इंटरफ़ेस संग्रह इंटरफ़ेस को इनहेरिट करता है। सूची इंटरफ़ेस में डेटा संरचनाएं होती हैं जो ऑर्डर किए गए डेटा या वस्तुओं के संग्रह को संग्रहीत करने के लिए उपयोग की जाती हैं। ये डेटा संरचनाएँ एक सूची प्रकार की होती हैं। सूची इंटरफ़ेस को लागू करने वाले इन डेटा संरचनाओं में डुप्लिकेट मान हो सकते हैं या नहीं भी हो सकते हैं।
सूची इंटरफ़ेस में वे विधियाँ शामिल हैं जिनका उपयोग सूची-ऑब्जेक्ट से तत्वों को एक्सेस करने, सम्मिलित करने या हटाने के लिए किया जाता है।
सूची इंटरफ़ेस को लागू करने वाले विभिन्न वर्ग निम्नानुसार हैं:
Android के लिए सबसे अच्छा जासूस फोन एप्लिकेशन
- सारणी सूची
- लिंक्ड सूची
- वेक्टर
- ढेर
हम इनमें से प्रत्येक वर्ग पर संक्षेप में चर्चा करेंगे। हमारे बाद के विषयों में संग्रह रूपरेखा कक्षाओं में से प्रत्येक पर एक विस्तृत चर्चा होगी।
# 1) ArrayList
ArrayList सूची इंटरफ़ेस का सबसे सरल कार्यान्वयन है। ArrayList सम्मिलन आदेश को संरक्षित करता है और यह सिंक्रनाइज़ नहीं है।
ArrayList डेटा संरचना (संग्रह) की सामान्य परिभाषा इस प्रकार है:
List list1= new ArrayList ();
सूची को परिभाषित करने के बाद, आप तत्वों को जोड़ने के लिए method ऐड ’विधि का उपयोग कर सकते हैं। ध्यान दें कि आंतरिक रूप से ArrayList ने डायनेमिक सरणी तंत्र का उपयोग किया है।
निम्नलिखित उदाहरण देखें जो रंगों का एक सरणी संग्रह बनाते हैं।
import java.util.*; class Main { public static void main(String args()) { //Creating arraylist of String objects ArrayList color_list=new ArrayList(); //populate the arraylist with add method color_list.add('Red'); color_list.add('Green'); color_list.add('Blue'); color_list.add('Cyan'); color_list.add('Magenta'); color_list.add('Yellow'); //Traverse the list through Iterator Iterator itr=color_list.iterator(); System.out.println('The contents of the arraylist are:'); while(itr.hasNext()){ System.out.println(itr.next()); } } }
आउटपुट:
उपरोक्त कार्यक्रम ArrayList संग्रह के प्रदर्शन को दर्शाता है। हम संग्रह में रंग मान जोड़ते हैं और फिर पुनरावृति का उपयोग करके संग्रह में व्यक्तिगत मूल्यों को प्रदर्शित करने के लिए संग्रह को पीछे छोड़ते हैं।
# 2) लिंक्डलिस्ट
LinkedList संग्रह आंतरिक रूप से भंडारण तत्वों के लिए एक डबल लिंक सूची तंत्र का उपयोग करता है। इसमें डुप्लिकेट तत्व हो सकते हैं। LinkedList संग्रह संचालन तेज हैं क्योंकि तत्वों की शिफ्टिंग की आवश्यकता नहीं है।
लिंक की गई सूची बनाने की सामान्य परिभाषा इस प्रकार है:
List list2 = new LinkedList ();
निम्नलिखित कार्यक्रम प्रदर्शित करता है संख्या नामों के लिंक किए गए सूची संग्रह ।
import java.util.*; class Main { public static void main(String args()) { //linked list of String objects LinkedList linkedlist_num=new LinkedList(); linkedlist_num.add('one'); linkedlist_num.add('two'); linkedlist_num.add('three'); linkedlist_num.add('four'); linkedlist_num.add('five'); //iterate over the linked list to display contents Iterator itr=linkedlist_num.iterator(); System.out.println('The contents of the linked list are:'); while(itr.hasNext()) { System.out.println(itr.next()); } } }
आउटपुट:
इस प्रकार, हम एक लिंक की गई सूची बनाते हैं और फिर method ऐड ’विधि का उपयोग करके इसमें तत्व जोड़ते हैं। फिर एक पुनरावृत्ति का उपयोग करते हुए, हम लिंक की गई सूची को पार करते हैं और प्रत्येक तत्व को प्रदर्शित करते हैं।
# 3) वेक्टर
वेक्टर ArrayList के समान है और ArrayList जैसे तत्वों को संग्रहीत करने के लिए एक गतिशील सरणी का उपयोग करता है। लेकिन वेक्टर संग्रह के अलावा कई स्वतंत्र तरीकों का समर्थन करता है जो इसे पसंदीदा संग्रह बनने के लिए बेहतर विकल्प बनाता है।
वेक्टर संग्रह की सामान्य परिभाषा है:
List list3 = new Vector();
ध्यान दें कि हालांकि वेक्टर और ArrayList गतिशील सरणियों के समान तंत्र का उपयोग करते हैं, वेक्टर तत्व सिंक्रनाइज़ हैं।
नीचे दिया गया जावा प्रोग्राम संग्रह ढांचे में वैक्टर के उपयोग को दर्शाता है ।
import java.util.*; public class Main { public static void main(String args()) { Vector subject_vector=new Vector(); subject_vector.add('English'); subject_vector.add('Hindi'); subject_vector.add('Maths'); subject_vector.add('Science'); Iterator itr=subject_vector.iterator(); System.out.println('Vector contents:'); while(itr.hasNext()) { System.out.println(itr.next()); } } }
आउटपुट:
इस कार्यक्रम में, हमने विषयों से मिलकर एक वेक्टर संग्रह को परिभाषित किया है। हम विभिन्न विषयों को जोड़ते हैं और फिर तत्वों को आउटपुट करने के लिए एक पुनरावृत्ति का उपयोग करते हैं।
# 4) ढेर
ढेर डेटा संरचना तत्वों को सम्मिलित करने के अंतिम-प्रथम-आउट (LIFO) तरीके को लागू करती है। स्टैक क्लास वेक्टर का एक उपवर्ग है (ऊपर दिए गए संग्रह पदानुक्रम आरेख को देखें)। अपने स्वयं के तरीकों के अलावा, स्टैक संग्रह भी वेक्टर संग्रह के तरीकों का समर्थन करता है।
स्टैक संग्रह की सामान्य परिभाषा है:
List list4 = new Stack();
निम्नलिखित कार्यक्रम ढेर संग्रह ।
import java.util.*; public class Main { public static void main(String args()) { Stack even_stack = new Stack (); even_stack.push(2); even_stack.push(4); even_stack.push(6); even_stack.push(8); even_stack.push(10); System.out.println('The element removed from stack: ' + even_stack.pop()); Iterator itr=even_stack.iterator(); System.out.println('The contents of the stack are:'); while(itr.hasNext()) { System.out.print(itr.next() + ' '); } } }
आउटपुट:
जैसा कि आप उपरोक्त कार्यान्वयन में देख सकते हैं, नए तत्वों को स्टैक में जोड़कर उपयोग किया जाता है 'धक्का दें' ऑपरेशन। स्टैक में एक एकल प्रविष्टि बिंदु होता है जिसे 'स्टैक के शीर्ष' कहा जाता है और तत्वों को शीर्ष पर स्टैक पर धकेल दिया जाता है। इस प्रकार, जोड़ा गया अंतिम तत्व स्टैक के शीर्ष पर है।
जोड़ने की तरह, तत्वों को भी एक छोर से हटा दिया जाता है यानी ढेर के ऊपर। तत्वों को निकालने के लिए, एक ऑपरेशन 'पॉप' का उपयोग किया जाता है। इस प्रकार यदि आप पॉप कहते हैं (), तो स्टैक के शीर्ष पर मौजूद तत्व को हटा दिया जाएगा।
उपरोक्त आउटपुट में, हम तत्व 2, 4, 6,8,10 सम्मिलित करते हैं और फिर पॉप () कॉल करते हैं ताकि 10 को हटा दिया जाए।
कतार इंटरफ़ेस
कतार इंटरफ़ेस से प्राप्त संग्रह पहले-में-पहले (FIFO) आदेश का पालन करते हैं। तत्वों को एक छोर पर डाला जाता है और दूसरे छोर से हटा दिया जाता है। इसलिए पहले दर्ज किया गया तत्व पहले हटाए जाने वाले तत्व के रूप में होता है।
नीचे दिए गए संग्रह ऐसे हैं जो क्वेरी इंटरफ़ेस का समर्थन करते हैं।
- प्राथमिकता कतार
- और इंटरफ़ेस
- ArrayDeque
आइए इनमें से प्रत्येक पर संक्षेप में चर्चा करें।
(१) प्राथमिकता
प्रायोरिटी क्यू संग्रह में, संग्रहीत तत्वों को उनकी प्राथमिकताओं के आधार पर संसाधित किया जाता है। आप प्राथमिकता मान में शून्य मान संग्रहीत नहीं कर सकते।
प्राथमिकता कतार की सामान्य परिभाषा इस प्रकार है:
Queue q1 = new PriorityQueue();
नीचे कार्यक्रम प्राथमिकता कतार को लागू करता है।
import java.util.*; public class Main { public static void main(String args()) { PriorityQueue color_queue=new PriorityQueue(); color_queue.add('red'); color_queue.add('green'); color_queue.add('blue'); color_queue.add('cyan'); color_queue.add('magenta'); color_queue.add('yellow'); System.out.println('Priority Queue elements:'); System.out.println('head:'+color_queue.peek()); System.out.println('Other elements in Priority Queue:'); Iterator itr=color_queue.iterator(); while(itr.hasNext()) { System.out.print(itr.next() + ' '); } System.out.println('
'); color_queue.remove(); System.out.println('After removing element, new head:'+color_queue.element()); System.out.println('
'); color_queue.poll(); System.out.println('After removing another element, Priority Queue :'); Iterator itr2=color_queue.iterator(); while(itr2.hasNext()) { System.out.print(itr2.next() + ' '); } } }
आउटपुट:
एक बार फिर हम प्राथमिकता कतार के तत्वों के रूप में रंगों का उपयोग करते हैं। उपरोक्त कार्यक्रम में, हमने कतार में तत्वों को जोड़ने और क्रमशः एक तत्व को हटाने के लिए विधियों को जोड़ने और हटाने का उपयोग किया है। हम एक तत्व का उपयोग करते हैं जो प्राथमिकता पंक्ति में इंगित करता है कि एक तत्व लौटाता है।
अंत में एक पुनरावृत्ति का उपयोग करते हुए, प्राथमिकता कतार के तत्वों को प्रदर्शित किया जाता है।
# 2) स्पर्श इंटरफ़ेस
Deque या-double-end queue 'एक डेटा संरचना है जो आपको तत्वों को दोनों सिरों से जोड़ने और निकालने की अनुमति देता है। जावा संग्रह ढांचे में deque इंटरफ़ेस जो कतार इंटरफ़ेस का विस्तार करता है।
यह छल की कार्यक्षमता प्रदान करता है और इसमें एक वर्ग 'एरेडीडेके' विरासत में मिला है।
# 3) ArrayDeque
ArrayDeque deque इंटरफ़ेस को लागू करता है।
ArrayDeque की सामान्य परिभाषा इस प्रकार है:
Deque d = new ArrayDeque();
ArrayDeque आपको Deque की कार्यक्षमता का उपयोग करने की अनुमति देता है। ArrayList या stack जैसे अन्य संग्रहों के विपरीत, ArrayDeque की अपनी क्षमता पर कोई प्रतिबंध नहीं है।
निम्नलिखित उदाहरण ArrayDeque के कार्यान्वयन को दर्शाता है।
import java.util.*; public class Main { public static void main(String() args) { //Creating Deque and adding elements Deque deque = new ArrayDeque (); deque.add(10); deque.add(20); deque.add(30); System.out.println('Deque Elements:'); //Traversing elements for (Integer num : deque) { System.out.println(num); } } }
आउटपुट:
उपरोक्त कार्यक्रम में, हम प्रकार पूर्णांक के एक ArrayDeque संग्रह को परिभाषित करते हैं और इसमें पूर्णांक तत्वों को जोड़ते हैं जो कि ऐड विधि का उपयोग करते हैं। निर्माण के बाद संग्रह का पता लगाया जाता है।
इंटरफ़ेस सेट करें
सेट इंटरफ़ेस java.util पैकेज का एक हिस्सा है और संग्रह इंटरफ़ेस से विस्तारित होता है। सेट एक संरचना है जो संग्रह को डुप्लिकेट मान और एक से अधिक शून्य मान की अनुमति नहीं देता है।
निम्न वर्ग सेट इंटरफ़ेस को लागू करते हैं।
- हैशसेट
- लिंक्डहाशसेट
- ट्रीसैट
(1) हैशसेट
HashSet संग्रह जो इंटरफ़ेस सेट करता है, उसमें अलग-अलग मान संग्रहीत हैं। यह संग्रह वस्तुओं को संग्रहीत करने के लिए हैशिंग तकनीक का उपयोग करता है और भंडारण तत्वों के लिए हैश तालिका का उपयोग करता है।
टी वह हैशसेट संग्रह की सामान्य परिभाषा नीचे दी गई है।
Set s1 = new HashSet();
हमने निम्नलिखित कार्यक्रम में हाशसेट कार्यान्वयन दिया है।
import java.util.*; public class Main { public static void main(String args()) { //Create HashSet set_subjects HashSet set_subjects=new HashSet(); System.out.println('Elements in the given hashsetset_subjects are:'); set_subjects.add('Maths'); set_subjects.add('Computers'); set_subjects.add('English'); set_subjects.add('French'); //Traverse the hashset Iterator itr=set_subjects.iterator(); while(itr.hasNext()) { System.out.println(itr.next()); } } }
आउटपुट:
उपरोक्त कार्यक्रम में, हम विषयों का एक HashSet संग्रह बनाते हैं और फिर संग्रह में तत्वों को प्रदर्शित करने के लिए एक itter का उपयोग करते हुए इसे पार करते हैं।
# 2) लिंक्ड हैशसेट
लिंक्डहाशसेट एक सेट इंटरफ़ेस लागू करता है और हैशसेट (संग्रह पदानुक्रम का उल्लेख करता है) का विस्तार करता है। LinkedHashSet इंटरफ़ेस सेट की लिंक की गई सूची प्रतिनिधित्व है। लिंक्डहाशसेट में अद्वितीय तत्व शामिल हैं, लेकिन अशक्त मूल्यों की अनुमति देता है।
LinkedHashSet की सामान्य परिभाषा नीचे दी गई है।
Set s2 = new LinkedHashSet();
LinkedHashSet के लिए कार्यान्वयन नीचे दिया गया है।
import java.util.*; public class Main { public static void main(String args()) { LinkedHashSet set_subjects=new LinkedHashSet(); System.out.println('Elements in the LinkedHashSet set_subjects:'); set_subjects.add('Maths'); set_subjects.add('Computers'); set_subjects.add('English'); set_subjects.add('Sanskrit'); Iterator itr=set_subjects.iterator(); while(itr.hasNext()) { System.out.println(itr.next()); } } }
आउटपुट:
एक बार फिर हम लिंक्डशैट्स बनाने के लिए पुस्तक के शीर्षक का उपयोग करते हैं। जैसा कि आप आउटपुट से देख सकते हैं, इसके अलावा लिंकहैशसेट द्वारा जोड़ का क्रम बनाए रखा गया है।
SortedSet इंटरफ़ेस
SortedSet इंटरफ़ेस तत्वों के पूर्ण आदेश की अनुमति देता है। इसमें ऐसे तरीके शामिल हैं जो तत्वों का प्राकृतिक क्रम प्रदान करते हैं। सॉर्टेडसेट इंटरफ़ेस को लागू करने वाले संग्रह में तत्व बढ़ते क्रम में व्यवस्थित होते हैं।
ट्रीसेट क्लास एक ऐसा उदाहरण है जो SortedSet इंटरफ़ेस को लागू करता है।
पेड़
ट्रीसेट की सामान्य परिभाषा इस प्रकार है:
Set s3 = new TreeSet();
ट्रीसेट सॉर्टेडसेट इंटरफ़ेस को लागू करता है और इसमें अद्वितीय तत्व होते हैं। भंडारण और पुनर्प्राप्ति काफी तेज है और फिर तत्वों को आरोही क्रम में व्यवस्थित किया जाता है।
import java.util.*; public class Main{ public static void main(String args()) { //create a treeset of integers TreeSet set_oddnums=new TreeSet (); set_oddnums.add(1); set_oddnums.add(3); set_oddnums.add(5); set_oddnums.add(7); set_oddnums.add(9); System.out.println('Elements in TreeSet are:'); //traverse the treeset using iterator Iterator itr=set_oddnums.iterator(); while(itr.hasNext()) { System.out.print(itr.next() + ' '); } } }
आउटपुट:
उपरोक्त कार्यक्रम में, हमने ऐड मेथड्स का उपयोग करके संग्रह में विषम संख्याएँ बनाई और जोड़ीं। फिर एक पुनरावृत्ति का उपयोग करके, हम संग्रह में तत्वों को आउटपुट करते हैं।
जावा कलेक्शंस फ्रेमवर्क के फायदे
- कम प्रोग्रामिंग: कलेक्शंस फ्रेमवर्क उन सभी इंटरफेस और कक्षाओं के साथ आता है, जिनमें विधियाँ होती हैं जो प्रोग्रामर को एक कुशल प्रोग्राम लिखने की अनुमति दे सकती हैं। इस तरह, प्रोग्रामर को बहुत अधिक प्रोग्रामिंग पर ध्यान केंद्रित करने की आवश्यकता नहीं है।
- लगातार तरीकों और एपीआई: सभी वर्गों में सामान्य तरीके हैं जो डेटा पर कार्य करते हैं। ये API पूरे वर्ग के अनुरूप होते हैं और प्रोग्रामर को प्रत्येक वर्ग के लिए कई अलग-अलग तरीकों के बारे में चिंता करने की आवश्यकता नहीं होती है।
- गति और सटीकता बढ़ाएँ: आप संग्रह ढांचे का उपयोग करके अत्यधिक कुशल प्रोग्राम लिख सकते हैं और साथ ही तेज और सटीक प्रोग्राम भी कर सकते हैं क्योंकि संग्रह ढांचा डेटा संरचनाओं और संग्रह को लागू करने के लिए पूर्ण कार्यक्षमता प्रदान करता है।
- सॉफ़्टवेयर पुन: उपयोग की सुविधा देता है: जावा संग्रह ढांचे की डेटा संरचनाएं और एल्गोरिदम पुन: प्रयोज्य हैं।
- असंबंधित एपीआई के बीच अंतर: संग्रह एपीआई असंबंधित एपीआई के बीच भी अंतर की अनुमति देते हैं।
- नए एपीआई के डिजाइन के लिए बहुत कम प्रयास: प्रोग्रामर मानक संग्रह एपीआई का उपयोग कर सकते हैं और उसी के आधार पर नए एपीआई डिजाइन कर सकते हैं। उन्हें पूर्ण नए API लिखने के लिए संघर्ष नहीं करना पड़ेगा।
बार बार पूछे जाने वाले प्रश्न
# 1) जावा में संग्रह ढांचे का उपयोग क्या है?
उत्तर: संग्रह की रूपरेखा प्रीपेड एल्गोरिदम, इंटरफेस और कक्षाएं प्रदान करती है जो प्रोग्रामर को अत्यधिक कुशल प्रोग्राम लिखने की अनुमति देती हैं जो डेटा को स्टोर और प्रोसेस कर सकते हैं।
# 2) क्यों संग्रह एक ढांचा है?
उत्तर: एक फ्रेमवर्क कक्षाओं, इंटरफेस और एल्गोरिदम का पुन: प्रयोज्य संग्रह है। संग्रह की रूपरेखा भी इन वर्गों पर संचालित डेटा संरचना वर्गों और एल्गोरिदम का पुन: प्रयोज्य संग्रह है।
# 3) जावा में जावा कलेक्शंस एपीआई क्या है?
उत्तर: जावा संग्रह एपीआई उन इंटरफेस और कक्षाएं प्रदान करता है जिन्हें डेटा संरचनाओं का उपयोग करने के लिए बढ़ाया और कार्यान्वित किया जा सकता है जो कि संग्रह के अलावा और कुछ नहीं हैं।
# 4) जावा में संग्रह और संग्रह के बीच अंतर क्या है?
उत्तर: संग्रह संग्रह ढांचे में एक आधार इंटरफ़ेस है, जबकि 'संग्रह' एक वर्ग है। दोनों java.util पैकेज का एक हिस्सा हैं।
**** अधिक विवरण और जावा कलेक्शंस फ्रेमवर्क के उदाहरण: ****
आप एक पेन का परीक्षण कैसे करेंगे
सूची, सेट और कतार के बीच तुलना:
सूची | सेट | पंक्ति |
---|---|---|
प्रविष्टि क्रम बनाए रखा है | हाश सेट में सम्मिलन आदेश कायम नहीं है | प्रविष्टि क्रम बनाए रखा है। |
डुप्लिकेट तत्व हो सकते हैं | डुप्लिकेट तत्व नहीं हो सकते | डुप्लिकेट तत्व हो सकते हैं। |
किसी भी इंडेक्स के लिए सरणी का सम्मिलन और निष्कासन किया जा सकता है। | निर्दिष्ट तत्व निकालें। | केवल अंतिम सम्मिलित तत्व को पॉप आउट किया जा सकता है। इसके अलावा, तत्वों का सम्मिलन अंत में होता है। |
एरे लिस्ट क्लास
ऐरे में, मेमोरी आवंटन निर्धारित है। लेकिन ArrayList में, स्मृति को गतिशील रूप से आवंटित किया जा सकता है। यह ArrayList वर्ग सम्मिलन क्रम को बनाए रखता है और आप डुप्लिकेट तत्वों को सम्मिलित कर सकते हैं।
सरणी सूची के लिए डेमो कार्यक्रम:
public class ArrayListDemo { public static void main(String() args) { ArrayList li = new ArrayList (); li.add(1); li.add(2); li.add(3); li.remove(0); for (Integer temp : li) { System.out.println(temp); } System.out.println('=========='); ArrayList l = new ArrayList(); l.add('text1'); l.add('text2'); l.add('text3'); for (String temp : l) { System.out.println(temp); } System.out.println('=========='); ArrayList al=new ArrayList(); al.add(1); al.add(2); al.forEach((a)->;System.out.println(a)); } }
लिंक्डलिस्ट क्लास
लिंक्ड सूची डेटा संरचना में नोड होते हैं और इस नोड में दो भाग होंगे:
- डेटा
- अगले तत्व का संदर्भ
पहला नोड अलग नोड नहीं है। इसमें केवल संदर्भ होता है और इसे सिर कहा जाता है। अंतिम नोड अशक्त है।
डेमो कार्यक्रम:
public class LinkedListDemo { public static void main(String() args) { LinkedList list =new LinkedList(); list.add(22); list.add(44); list.add(46); list.add(46); list.add(46); for(Integer temp:list) { System.out.println(temp); } Iterator it =list.iterator(); while(it.hasNext()) { System.out.println(it.next()); } System.out.println('=========='); for (int i=0;i 
पंक्ति
एक कतार पहली बार पहली (फीफो) डेटा संरचना में है। यदि आप हटाने की विधि कहते हैं, तो हमेशा पहले सम्मिलित तत्व को कतार से हटा दिया जाएगा। इसलिए, कतार का उपयोग वास्तविक समय अनुप्रयोग में किया जाता है जहां सम्मिलित क्रम में डेटा को पुनः प्राप्त करना होता है।
उदाहरण कार्यक्रम:
public class QueueDemo { public static void main(String() args) { PriorityQueue pq=new PriorityQueue(); pq.add(1); pq.add(2); pq.add(3); pq.add(4); pq.add(5); pq.add(6); pq.add(7); for(int temp : pq) { System.out.println(temp); } pq.remove(); System.out.println('queue after removing a element'); System.out.println(pq); } }

सेट
एक सेट संग्रह डुप्लिकेट तत्वों की अनुमति नहीं देगा। आप एक सेट डेटा संरचना का उपयोग कर सकते हैं, जब आप दोहराव के बिना डेटा के संग्रह को संसाधित करना चाहते हैं, और जब डालने का क्रम बनाए रखने की कोई आवश्यकता नहीं है।
डेमो कार्यक्रम:
public class demohashset { public static void main (String() args){ HashSet hs=new HashSet(); hs.add(23); hs.add(24); hs.add(25); hs.add(26); hs.add(27); hs.add(28); hs.add(293); hs.add(203); hs.add(263); hs.add(243); hs.add(243); (int temp:hs) { System.out.println(temp); } hs.remove(24); hs.remove(23); System.out.println('==============='); System.out.println('after removing a element ::::'); System.out.println('==============='); hs.forEach((temp)->System.out.println(temp)); ; } }

एमएपी इंटरफ़ेस
- जब आप कुंजी और मूल्य जोड़ी के साथ तत्वों का प्रक्रिया संग्रह चाहते हैं, तो आप मानचित्र डेटा संरचना का उपयोग कर सकते हैं क्योंकि मानचित्र एक ऑब्जेक्ट है जो मानों के लिए कुंजी मैप कर सकता है।
- मानचित्र में डुप्लिकेट कुंजियाँ नहीं हो सकतीं।
- मानचित्र के महत्वपूर्ण कार्यान्वयन हैंशप, ट्रेमैप, लिंक्डहाशपैप, हैशटेबल।
HashMap, Treemap, LinkedHashMap और हैशटेबल के बीच अंतर:
हैश मैप ट्री-मैप LinkedHashmap हैश तालिका अशक्त कुंजियों और मूल्यों की अनुमति है केवल शून्य मानों की अनुमति है। अशक्त कुंजियों और मूल्यों की अनुमति दी। यह शून्य कुंजियों और मूल्यों की अनुमति नहीं देता है। सिंक्रनाइज़ नहीं है सिंक्रनाइज़ नहीं है सिंक्रनाइज़ नहीं है सिंक्रनाइज़ पुनरावृत्ति में आदेश बनाए रखने की कोई गारंटी नहीं है छंटाई प्राकृतिक व्यवस्था के आधार पर की जाएगी। प्रविष्टि आदेश बनाए रखा जाएगा सम्मिलन क्रम बनाए नहीं रखा गया।
डेमो कार्यक्रम:
public class HashMapDemo { public static void main(String() args) { HashMap m=new HashMap(); m.put(1, 'one'); m.put(2, 'two'); m.put(3, 'three'); m.put(4, 'four'); m.put(null, 'one'); m.put(null, null); System.out.println(m); TreeMap tm =new TreeMap(); tm.put('R', 'red'); tm.put('B', null); tm.put('G', 'green'); System.out.println(tm); Hashtable ht =new Hashtable(); ht.put(1, 'one'); ht.put(2, 'two'); ht.put(3, 'three'); ht.put(4, 'four'); System.out.println(ht); } }

मुख्य बिंदुओं पर ध्यान दिया जाना चाहिए:
- सूची, कतार, सेट इंटरफेस संग्रह इंटरफ़ेस का विस्तार करते हैं और इस संग्रह इंटरफ़ेस में ऐड, रिमूव आदि जैसे सामान्य तरीके हैं।
- प्रविष्टि क्रम सूची में बनाए रखा गया है और एक सेट में डुप्लिकेट तत्व नहीं हो सकते। कतार पहले डेटा संरचना में पहले स्थान पर है।
- मानचित्र में मुख्य और मूल्य जोड़े होंगे। HashMap, Treemap, Hashtable, लिंक्ड HashMap मानचित्र इंटरफ़ेस का महत्वपूर्ण कार्यान्वयन है।
निष्कर्ष
इस ट्यूटोरियल ने हमें जावा कलेक्शंस फ्रेमवर्क का परिचय दिया। हमने संक्षेप में उन सभी वर्गों और इंटरफेस को छुआ है जो जावा संग्रह ढांचे का एक हिस्सा हैं।
इस श्रृंखला में हमारे बाद के ट्यूटोरियल में, हम इनमें से प्रत्येक वर्ग और इंटरफेस के बारे में विस्तार से जानेंगे।
आप हमारे आगामी ट्यूटोरियल में जावा में प्रतिबिंबों के बारे में अधिक जानकारी प्राप्त कर सकते हैं !!!
PREV ट्यूटोरियल | अगले ट्यूटोरियल
अनुशंसित पाठ
- उदाहरणों के साथ जावा परावर्तन ट्यूटोरियल
- शुरुआती के लिए गहराई से ग्रहण ट्यूटोरियल
- Java SWING Tutorial: कंटेनर, कंपोनेंट्स एंड इवेंट हैंडलिंग
- जावा ट्यूटोरियल फॉर बिगिनर्स: 100+ हैंड्स-ऑन जावा वीडियो ट्यूटोरियल
- जावा में मॉडिफायर एक्सेस करें - उदाहरणों के साथ ट्यूटोरियल
- स्ट्रिंग स्ट्रिंग बफर और स्ट्रिंग बिल्डर ट्यूटोरियल के साथ जावा स्ट्रिंग
- जावा प्रोग्रामिंग भाषा का परिचय - वीडियो ट्यूटोरियल
- ककड़ी सेलेनियम ट्यूटोरियल: ककड़ी जावा सेलेनियम वेबड्राइवर एकीकरण