जावा - संग्रह रूपरेखा

जावा 2 से पहले, जावा ने तदर्थ कक्षाएं प्रदान की हैं Dictionary, Vector, Stack, तथा Propertiesवस्तुओं के समूहों को संग्रहीत और हेरफेर करना। हालांकि ये कक्षाएं काफी उपयोगी थीं, लेकिन उनके पास एक केंद्रीय, एकीकृत विषय का अभाव था। इस प्रकार, आपने वेक्टर का उपयोग करने के तरीके को गुणों के उपयोग के तरीके से अलग किया था।

संग्रह की रूपरेखा कई लक्ष्यों को पूरा करने के लिए डिज़ाइन की गई थी, जैसे -

  • ढांचे को उच्च-प्रदर्शन करना पड़ा। मौलिक संग्रह (गतिशील सरणियों, लिंक्ड सूची, पेड़ और हैशटेबल्स) के लिए कार्यान्वयन अत्यधिक कुशल थे।

  • फ्रेमवर्क को विभिन्न प्रकार के संग्रह को एक समान तरीके से और उच्च स्तर की इंटरऑपरेबिलिटी के साथ काम करने की अनुमति देनी थी।

  • किसी संग्रह को आसानी से विस्तारित और / या अनुकूलित करना था।

इस छोर की ओर, पूरे संग्रह ढांचे को मानक इंटरफेस के एक सेट के आसपास डिज़ाइन किया गया है। कई मानक कार्यान्वयन जैसे किLinkedList, HashSet, तथा TreeSetइनमें से इंटरफेस दिए गए हैं जिनका आप उपयोग कर सकते हैं-और यदि आप चुनते हैं तो आप अपना स्वयं का संग्रह भी लागू कर सकते हैं।

एक संग्रह ढांचा, संग्रह का प्रतिनिधित्व करने और हेरफेर करने के लिए एक एकीकृत वास्तुकला है। सभी संग्रह रूपरेखाओं में निम्नलिखित शामिल हैं -

  • Interfaces- ये सार डेटा प्रकार हैं जो संग्रह का प्रतिनिधित्व करते हैं। इंटरफेस संग्रह को उनके प्रतिनिधित्व के विवरण से स्वतंत्र रूप से हेरफेर करने की अनुमति देते हैं। वस्तु-उन्मुख भाषाओं में, इंटरफेस आमतौर पर एक पदानुक्रम बनाते हैं।

  • Implementations, i.e., Classes- ये संग्रह इंटरफेस के ठोस कार्यान्वयन हैं। संक्षेप में, वे पुन: प्रयोज्य डेटा संरचनाएं हैं।

  • Algorithms- ये ऐसी विधियाँ हैं जो उपयोगी संगणनाएँ प्रस्तुत करती हैं, जैसे कि खोज और छँटाई, संग्रह इंटरफेस को लागू करने वाली वस्तुओं पर। एल्गोरिदम को बहुरूपता कहा जाता है: अर्थात्, एक ही विधि का उपयोग उपयुक्त संग्रह इंटरफ़ेस के कई अलग-अलग कार्यान्वयनों पर किया जा सकता है।

संग्रह के अलावा, ढांचा कई मानचित्र इंटरफेस और कक्षाओं को परिभाषित करता है। नक्शे कुंजी / मूल्य जोड़े को संग्रहीत करते हैं। यद्यपि मानचित्र शब्द के उचित उपयोग में संग्रह नहीं हैं , लेकिन वे पूरी तरह से संग्रह के साथ एकीकृत हैं।

संग्रह इंटरफेस

संग्रह की रूपरेखा कई इंटरफेस को परिभाषित करती है। यह खंड प्रत्येक इंटरफ़ेस का अवलोकन प्रदान करता है -

अनु क्रमांक। इंटरफ़ेस और विवरण
1 संग्रह इंटरफ़ेस

यह आपको वस्तुओं के समूहों के साथ काम करने में सक्षम बनाता है; यह संग्रह पदानुक्रम के शीर्ष पर है।

2 सूची इंटरफ़ेस

इसका विस्तार होता है Collection और सूची का एक उदाहरण तत्वों का एक संग्रह संग्रहीत करता है।

3 सेट

यह सेट को संभालने के लिए संग्रह का विस्तार करता है, जिसमें अद्वितीय तत्व होने चाहिए।

4 क्रमबद्ध करें

यह सॉर्ट किए गए सेट को संभालने के लिए सेट का विस्तार करता है।

5 नक्शा

यह मूल्यों के लिए अद्वितीय कुंजियों को मैप करता है।

6 Map.Entry

यह नक्शे में एक तत्व (एक कुंजी / मूल्य जोड़ी) का वर्णन करता है। यह मानचित्र का एक आंतरिक वर्ग है।

7 क्रमबद्ध करें

यह मानचित्र को विस्तारित करता है ताकि कुंजियाँ एक बढ़ते क्रम में बनी रहें।

8 गणना

यह विरासत इंटरफ़ेस उन विधियों को परिभाषित करता है जिनके द्वारा आप वस्तुओं के संग्रह में तत्वों को गणना (एक समय में एक) प्राप्त कर सकते हैं। इस विरासत इंटरफ़ेस को Iterator द्वारा सुपररेड किया गया है।

संग्रह कक्षाएं

जावा मानक संग्रह कक्षाओं का एक सेट प्रदान करता है जो संग्रह इंटरफेस को लागू करता है। वर्गों में से कुछ पूर्ण कार्यान्वयन प्रदान करते हैं जो-के रूप में उपयोग किए जा सकते हैं और अन्य अमूर्त वर्ग हैं, कंकाल कार्यान्वयन प्रदान करते हैं जो कंक्रीट संग्रह बनाने के लिए शुरुआती बिंदुओं के रूप में उपयोग किए जाते हैं।

मानक संग्रह कक्षाओं को निम्नलिखित तालिका में संक्षेपित किया गया है -

अनु क्रमांक। कक्षा और विवरण
1

AbstractCollection

संग्रह इंटरफ़ेस का अधिकांश भाग लागू करता है।

2

AbstractList

AbstractCollection बढ़ाता है और सूची इंटरफ़ेस के अधिकांश लागू करता है।

3

AbstractSequentialList

एक संग्रह द्वारा उपयोग के लिए AbstractList को विस्तारित करता है जो अपने तत्वों के यादृच्छिक उपयोग के बजाय अनुक्रमिक का उपयोग करता है।

4 लिंक्ड सूची

AbstractSequentialList का विस्तार करके एक लिंक्ड सूची लागू करता है।

5 सारणी सूची

AbstractList का विस्तार करके एक गतिशील सरणी को लागू करता है।

6

AbstractSet

सेट इंटरफ़ेस में से अधिकांश AbstractCollection और लागू करता है।

7 HashSet

एक हैश तालिका के साथ उपयोग के लिए AbstractSet फैली हुई है।

8 LinkedHashSet

सम्मिलन-क्रम पुनरावृत्तियों की अनुमति देने के लिए HashSet का विस्तार करता है।

9 TreeSet

एक पेड़ में संग्रहीत एक सेट लागू करता है। AbstractSet को बढ़ाता है।

10

AbstractMap

अधिकांश मैप इंटरफ़ेस को लागू करता है।

1 1 हैश मैप

हैश टेबल का उपयोग करने के लिए AbstractMap का विस्तार करता है।

12 ट्री-मैप

ट्री का उपयोग करने के लिए AbstractMap का विस्तार करता है।

13 WeakHashMap

कमजोर कुंजियों के साथ हैश तालिका का उपयोग करने के लिए AbstractMap का विस्तार करता है।

14 LinkedHashMap

सम्मिलन-क्रम पुनरावृत्तियों की अनुमति देने के लिए HashMap का विस्तार करता है।

15 IdentityHashMap

AbstractMap का विस्तार करता है और दस्तावेजों की तुलना करते समय संदर्भ समानता का उपयोग करता है।

AbstractCollection, AbstractSet, AbstractList, AbstractSequentialList और AbstractMap कक्षाएं, कोर संग्रह इंटरफेस के कंकाल कार्यान्वयन प्रदान प्रयास कम करने के लिए उन्हें लागू करने की आवश्यकता है।

Java.util द्वारा परिभाषित निम्नलिखित विरासत कक्षाएं पिछले अध्याय में चर्चा की गई हैं -

अनु क्रमांक। कक्षा और विवरण
1 वेक्टर

यह एक गतिशील सरणी को लागू करता है। यह ArrayList के समान है, लेकिन कुछ अंतरों के साथ।

2 ढेर

स्टैक वेक्टर का एक उपवर्ग है जो एक मानक अंतिम-इन, पहले-आउट स्टैक को लागू करता है।

3 शब्दकोश

डिक्शनरी एक अमूर्त वर्ग है जो एक कुंजी / मान भंडारण भंडार का प्रतिनिधित्व करता है और बहुत कुछ मैप की तरह काम करता है।

4 हैश टेबल

हैशटेबल मूल java.util का हिस्सा था और एक शब्दकोश का एक ठोस कार्यान्वयन है।

5 गुण

गुण हैशटेबल का एक उपवर्ग है। इसका उपयोग उन मूल्यों की सूचियों को बनाए रखने के लिए किया जाता है जिनमें कुंजी एक स्ट्रिंग है और मूल्य भी एक स्ट्रिंग है।

6 BitSet

एक बिटसेट वर्ग एक विशेष प्रकार का सरणी बनाता है जो बिट वैल्यूज़ को धारण करता है। आवश्यकतानुसार यह सरणी आकार में बढ़ सकती है।

संग्रह एल्गोरिदम

संग्रह की रूपरेखा कई एल्गोरिदम को परिभाषित करती है जिन्हें संग्रह और मानचित्र पर लागू किया जा सकता है। इन एल्गोरिदम को कलेक्शन क्लास के भीतर स्थिर तरीकों के रूप में परिभाषित किया गया है।

तरीकों में से कई एक फेंक सकते हैं ClassCastException, जो तब होता है जब असंगत प्रकार, या ए की तुलना करने का प्रयास किया जाता है UnsupportedOperationException, जो तब होता है जब एक संग्रहणीय संग्रह को संशोधित करने का प्रयास किया जाता है।

संग्रह तीन स्थिर चर को परिभाषित करते हैं: EMPTY_SET, EMPTY_LIST और EMPTY_MAP। सभी अपरिवर्तनीय हैं।

अनु क्रमांक। एल्गोरिथम और विवरण
1 संग्रह एल्गोरिदम

यहां सभी एल्गोरिदम कार्यान्वयन की एक सूची दी गई है।

Iterator का उपयोग कैसे करें?

अक्सर, आप एक संग्रह में तत्वों के माध्यम से चक्र करना चाहेंगे। उदाहरण के लिए, आप प्रत्येक तत्व प्रदर्शित करना चाह सकते हैं।

ऐसा करने का सबसे आसान तरीका एक इटेरेटर को नियोजित करना है, जो कि एक वस्तु है जो कि इटरेटर या लिस्टियेटर इंटरफेस को लागू करता है।

Iterator आपको एक संग्रह, तत्वों को प्राप्त करने या निकालने के माध्यम से चक्र करने में सक्षम बनाता है। ListIterator Iterator को एक सूची के द्विदिश अनुक्रमण और तत्वों के संशोधन की अनुमति देता है।

अनु क्रमांक। Iterator विधि और विवरण
1 जावा इटरेटर का उपयोग करना

यहां Iterator और ListIterator इंटरफेस द्वारा प्रदान किए गए उदाहरणों के साथ सभी विधियों की एक सूची दी गई है।

एक तुलनित्र का उपयोग कैसे करें?

ट्रीसेट और ट्रीपाइप दोनों एक क्रमबद्ध क्रम में तत्वों को संग्रहीत करते हैं। हालाँकि, यह तुलनित्र है जो ठीक-ठीक परिभाषित करता है कि क्रमबद्ध क्रम का क्या अर्थ है।

यह इंटरफ़ेस हमें दिए गए संग्रह को विभिन्न तरीकों से किसी भी संख्या में क्रमबद्ध करने देता है। इसके अलावा इस इंटरफ़ेस का उपयोग किसी भी वर्ग के किसी भी उदाहरण को सॉर्ट करने के लिए किया जा सकता है (यहां तक ​​कि जिन कक्षाओं को हम संशोधित नहीं कर सकते हैं)।

अनु क्रमांक। Iterator विधि और विवरण
1 जावा तुलनित्र का उपयोग करना

यहाँ सभी तरीकों की एक सूची है, उदाहरण के लिए तुलनित्र इंटरफ़ेस द्वारा प्रदान किया गया है।

सारांश

जावा संग्रह की रूपरेखा प्रोग्रामर को पहले से तैयार डेटा संरचनाओं के साथ-साथ एल्गोरिदम तक पहुंच प्रदान करती है।

एक संग्रह एक ऑब्जेक्ट है जो अन्य वस्तुओं के संदर्भों को पकड़ सकता है। संग्रह इंटरफेस उन ऑपरेशनों की घोषणा करता है जो प्रत्येक प्रकार के संग्रह पर किए जा सकते हैं।

संग्रह ढांचे के वर्ग और इंटरफेस पैकेज java.util में हैं।