परिचय

लगभग हर प्रोग्राम को डेटा के कुछ सेट को स्टोर करने की आवश्यकता होती है। यह तार और संख्याएं, वस्तुएं आदि हो सकती हैं। Arrays एक शानदार भंडारण समाधान है। लेकिन सरणियों की कुछ सीमाएँ हैं। उदाहरण के लिए, उनका आकार निश्चित है, तत्वों को हटाया नहीं जा सकता है, और आप बीच में तत्वों को सम्मिलित नहीं कर सकते। इन और अन्य सीमाओं से बचने के लिए संग्रह बनाए गए थे। सभी प्रकार के संग्रह (और उनमें से कई हैं, जैसा कि हम इस पाठ में बाद में देखेंगे) में गतिशील रूप से स्वयं का आकार बदलने की क्षमता होती है। कुछ संग्रह प्रकार आदेशित तत्वों को संग्रहीत कर सकते हैं और जैसे ही वे जोड़े जाते हैं, स्वचालित रूप से नए तत्वों को क्रम में रख सकते हैं।

इस पाठ में, हम Java Collections Framework में आधार संग्रहों के वर्ग पदानुक्रम से परिचित होंगे । कई वैकल्पिक पुस्तकालय भी हैं जो मानक जावा कलेक्शंस फ्रेमवर्क की क्षमताओं का विस्तार करते हैं । इनमें से सबसे लोकप्रिय अमरूद (गूगल कलेक्शंस लाइब्रेरी) है।

* आरेख में सभी इंटरफेस और कक्षाओं का प्रतिनिधित्व नहीं किया जाता है। कुछ को समझने में आसान बनाने के लिए छोड़ दिया गया था।

बुनियादी इंटरफेस

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

आइए इन इंटरफेस पर एक नजर डालते हैं:

  1. संग्रह - एक साधारण संग्रह जिसमें तत्वों (वस्तुओं) का एक समूह होता है। इस संग्रह में तत्वों के साथ काम करने के लिए बुनियादी तरीके हैं: सम्मिलित करें ( जोड़ें , जोड़ें सभी ), हटाएं ( निकालें , हटाएं सभी , साफ़ करें ), खोज ( शामिल हैं , सभी शामिल हैं ), जांचें कि क्या संग्रह खाली है ( isEmpty ) और आकार ( आकार ) प्राप्त करें।

  2. नक्शा - कुंजी-मूल्य जोड़े के रूप में संरचित संग्रह। इसके अलावा, मानचित्र में प्रत्येक कुंजीअद्वितीय है: किसी भी दो कुंजियों का मान समान नहीं होता है। इस संग्रह को कभी-कभी शब्दकोष भी कहा जाता है । मानचित्र एक अलग इंटरफ़ेस है। यह संग्रह इंटरफ़ेस को लागू नहीं करता है, लेकिन जावा कलेक्शंस फ्रेमवर्क का हिस्सा है ।

मानचित्र में तत्वों के साथ काम करने की उपयोगी विधियाँ :

  • सम्मिलित करें ( डालें , सभी डालें )

  • प्राप्त करें ( प्राप्त करें , कीसेट , मान , प्रविष्टिसेट )

  • हटाना ( निकालना , साफ़ करना )

  • खोज ( सम्‍मिलित कुंजी , सम्‍मिलित मान )

  • जांचें कि क्या संग्रह खाली है ( isEmpty )

  • आकार प्राप्त करें ( आकार )

अब उनमें से प्रत्येक के बारे में और बात करते हैं।

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

संग्रह इंटरफ़ेस Iterable इंटरफ़ेस का विस्तार करता है, जिसमें एक ही विधि है: iterator () । हमारे लिए, इसका मतलब यह है कि कोई भी संग्रह जो Iterable को इनहेरिट करता है , एक पुनरावर्तक को वापस करने में सक्षम होगा।

एक पुनरावर्तक एक विशेष वस्तु है जिसका उपयोग आप किसी भी संग्रह के तत्वों तक पहुँचने के लिए कर सकते हैं, इसके विशिष्ट कार्यान्वयन की परवाह किए बिना।

आंकड़ा दिखाता है कि 3 इंटरफेस संग्रह इंटरफ़ेस को इनहेरिट करते हैं: सूची , कतार और सेट । अब हम उनमें से प्रत्येक को संक्षेप में देखेंगे।

सूची एक आदेशित संग्रह है जो डुप्लिकेट मानों की अनुमति देता है। सूची की एक विशेष विशेषतायह है कि इसके तत्व क्रमांकित होते हैं और संख्या (सूचकांक) द्वारा पहुँचा जा सकता है।

एक कतार तत्वों को उस क्रम में संग्रहीत करती है जिस क्रम में उन्हें कतार में जोड़ा गया था।

एक सूची के विपरीत, एक सेट एक अनियंत्रित संग्रह का प्रतिनिधित्व करता है जो दोहराए गए तत्वों की अनुमति नहीं देता है। सेट इंटरफ़ेस एक गणितीय सेट की अवधारणा से मेल खाता है

मानचित्र इंटरफ़ेस का कार्यान्वयन

हम देख सकते हैं कि मानचित्र इंटरफ़ेस अद्वितीय कुंजियों और मानों के बीच मानचित्रण का प्रतिनिधित्व करता है।


interface Map<K, V>

जहाँ K कुंजियों का प्रकार है और V संग्रहीत मानों का प्रकार है।

एक कुंजी का उपयोग करके, हम मानचित्र से डेटा निकाल सकते हैं । मानचित्र में एक तत्व जोड़ने के लिए , हमें एक कुंजी और एक मान निर्दिष्ट करना होगा।

आइए मानचित्र के कुछ कार्यान्वयन देखें :

  1. हैश मैप मानचित्र का कार्यान्वयन हैजो हैश टेबल पर आधारित है। यह किसी भी प्रकार की कुंजियों और मूल्यों को संग्रहीत कर सकता है, जिसमें अशक्त भी शामिल है । तत्वों के क्रम की गारंटी नहीं है।

  2. LinkedHashMap एक डेटा संरचना है जो डेटा को तत्वों की लिंक की गई सूची के रूप में संग्रहीत करती है। सूची में तत्व उस क्रम में दिखाई देते हैं जिसमें उन्हें जोड़ा गया था।

  3. TreeMap SortedMap इंटरफ़ेस ( नेविगेबल मैप इंटरफ़ेस के माध्यम से)को लागू करता हैइस संरचना में तत्वों को क्रमबद्ध क्रम में संग्रहित किया जाता है (जब कोई नया तत्व जोड़ा जाता है, तो संग्रह स्वचालित रूप से क्रमबद्ध हो जाता है)। तेजी से पुनर्प्राप्ति के साथ बड़ी मात्रा में सॉर्ट किए गए डेटा को संग्रहीत करने के लिए ट्रीमैप बहुत अच्छा है।

पुराने संग्रह:

जावा में पिछले संस्करणों से अप्रचलित संग्रह हैं (पिछड़े संगतता को बनाए रखने के लिए)। नए कोड में इन पुराने संग्रहों का उपयोग नहीं किया जाना चाहिए:

  • गणना Iterator इंटरफ़ेस के अनुरूप;

  • वेक्टर - तत्वों की एक क्रमबद्ध सूची और ArrayList वर्ग के अनुरूप;

  • स्टैक - स्टैक डेटा संरचना का एक कार्यान्वयन, जो तत्वों को संग्रहीत और हेरफेर करता है जैसे कि आप पुस्तकों के ढेर के साथ कैसे इंटरैक्ट करेंगे। स्टैक में तत्वों को जोड़ने ( push ) और उन्हें हटाने ( pop ) के तरीके हैं;

  • शब्दकोश - मानचित्र इंटरफ़ेस के समान, लेकिन यह एक अमूर्त वर्ग है;

  • हैशटेबल - हैश मैप के समान।

आप इस लेख में संग्रह ढांचे के बारे में अधिक पढ़ सकते हैं ।