"हाय, अमीगो!"

"हाय, ऐली!"

"आज हम एक बार और सभी के लिए संग्रह की संरचना के चारों ओर अपना सिर लपेटने जा रहे हैं।"

"मैंने इसके लिए लंबा इंतजार किया है।"

"आप पहले से ही जानते हैं कि संग्रह क्या हैं, और आप जानते हैं कि उनके साथ कैसे काम करना है। यह आपके ज्ञान को एक सख्त प्रणाली में व्यवस्थित करने का समय है। फिर कई 'क्यों' और 'कैसे' प्रश्न दूर हो जाएंगे, और अधिकांश चीजें स्पष्ट हो जाएंगी।"

" संग्रह इंटरफेस । संग्रह इंटरफेस की विरासत संरचना कुछ इस तरह दिखती है:"

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

दो बातों पर ध्यान दें।

सबसे पहले, आप यहां जो कुछ भी देखते हैं वह एक इंटरफ़ेस है।

दूसरा, तीर का अर्थ है «विरासत»।

"दूसरे शब्दों में, सूची, सेट और कतार संग्रह का उत्तराधिकारी है, लेकिन मानचित्र नहीं है?"

"हाँ। सार वर्ग तब इन इंटरफेसों को विरासत में लेते हैं और बदले में, उन कार्यान्वयनों के बारे में जानते हैं जो उन अमूर्त वर्गों को प्राप्त करते हैं:  ऐरेलिस्ट, हैशटेबल, ट्रीसेट, ... "

"सही है आप।"

"अब देखते हैं कि ये इंटरफेस के तरीके क्या हैं:"

पुनरावर्तनीय <ई> के तरीके : इंटरफ़ेस:

तरीकों विवरण
Iterator<T> iterator(); एक पुनरावर्तक वस्तु लौटाता है।

"यह पर्याप्त नहीं लगता है।"

"खैर, इतने ही हैं। इटरेटर्स के लिए बस इतना ही। हम अभी उन्हें कवर नहीं करेंगे, लेकिन हम उन्हें जल्द ही विस्तार से कवर करेंगे।"

संग्रह के तरीके <ई>: इंटरफ़ेस:

तरीकों विवरण
boolean add(E e); संग्रह में एक तत्व जोड़ता है
boolean addAll(Collection<? extends E> c); संग्रह में तत्व जोड़ता है
void clear(); संग्रह से सभी तत्वों को निकालता है
boolean contains(Object o); यह देखने के लिए जाँच करता है कि संग्रह में तत्व है या नहीं।
boolean containsAll(Collection<?> c); यह देखने के लिए जाँच करता है कि संग्रह में तत्व हैं या नहीं।
boolean equals(Object o); यह देखने के लिए जांच करता है कि संग्रह समतुल्य हैं या नहीं
int hashCode(); हैश कोड लौटाता है
boolean isEmpty(); यह देखने के लिए जाँच करता है कि संग्रह खाली है या नहीं।
Iterator<E> iterator(); एक पुनरावर्तक वस्तु लौटाता है
boolean remove(Object o); संग्रह से एक तत्व निकालता है
boolean removeAll(Collection<?> c); संग्रह से तत्वों को निकालता है
boolean retainAll(Collection<?> c); सी में नहीं सभी तत्वों को हटा देता है
int size(); संग्रह का आकार लौटाता है
Object[] toArray(); संग्रह को एक सरणी में परिवर्तित करता है
<T> T[] toArray(T[] a); संग्रह को एक सरणी में परिवर्तित करता है

"मैं यहाँ सब कुछ पर पहले से ही ठोस हूँ। मैंने इनमें से आधे तरीकों का उपयोग किया है, और मैंने दूसरे आधे का सामना किया है।"

"महान, चलो फिर जारी रखें।"

सूची के तरीके  <ई>: इंटरफ़ेस:

तरीकों विवरण
void add(int index, E element); संग्रह के बीच में तत्वों को जोड़ता है
boolean addAll(int index, Collection<? extends E> c); संग्रह में तत्व जोड़ता है
E get(int index); इंडेक्स द्वारा एक तत्व देता है
int indexOf(Object o); किसी तत्व का सूचकांक (संख्या) लौटाता है
int lastIndexOf(Object o); अंतिम तत्व का सूचकांक लौटाता है।
ListIterator<E> listIterator(); सूची के लिए एक पुनरावर्तक लौटाता है
ListIterator<E> listIterator(int index); सूची के लिए एक पुनरावर्तक लौटाता है
E remove(int index); किसी तत्व को उसके सूचकांक द्वारा हटाता है
E set(int index, E element); सूचकांक द्वारा एक नया मान सेट करता है
List<E> subList(int fromIndex, int toIndex); एक उपसंग्रह लौटाता है

"यहां कुछ भी मौलिक रूप से नया नहीं है। मैं पहले से ही संग्रह के बारे में लगभग सब कुछ जानता हूं, जिसके बारे में मैं खुश हुए बिना नहीं रह सकता।"

"ठीक है, मुझे लगता है कि मुझे कुछ ऐसा मिल सकता है जो आपको आश्चर्यचकित कर देगा। लेकिन आइए इंटरफेस की जांच जारी रखें:"

सेट के तरीके <ई>: इंटरफ़ेस:

तरीकों विवरण
कोई विधियाँ नहीं

"सेट इंटरफ़ेस में कोई नई विधियाँ नहीं हैं - केवल वे जिन्हें यह इनहेरिट करता है।"

"हाँ, मैंने देखा कि इंटरएबल इंटरफ़ेस में भी कुछ नहीं था।

"दूसरी ओर, कम विधियों का अर्थ है कम याद रखना!"

"आपका जीवन-पुष्टि आशावाद मुझे खुश करता है।"

"सेट इंटरफ़ेस विधियों के साथ दो इंटरफेस द्वारा विरासत में मिला है: सॉर्टेडसेट और नेविगेबलसेट। लेकिन मैं उन पर नहीं जाऊंगा, या हम कभी खत्म नहीं करेंगे।"

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

"जो है सामने रखो।"

"फिर कसकर पकड़ें:"

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

"वाह, यह बहुत बड़ा है!"

"ठीक है, यह इतना बड़ा नहीं है। साथ ही, याद रखें कि सार वर्ग पूरी तरह से वैकल्पिक हैं। लेकिन यह याद रखना अच्छा है कि कौन सा वर्ग इंटरफेस लागू करता है। यह अक्सर काम में आ सकता है।"

"ओह, मैं यह भी नोट करना चाहूंगा कि कुछ संग्रह अप्रचलित माने जाते हैं।"

"वो कौन से हैं?"

"मैं वेक्टर, स्टैक, डिक्शनरी और हैशटेबल कक्षाओं के बारे में बात कर रहा हूं। ये साधारण संग्रह के सिंक्रनाइज़ (थ्रेड-सुरक्षित) संस्करण हैं।"

"लेकिन जावा ने बहुत सारे संग्रह के साथ  एक विशेष समवर्ती पुस्तकालय जोड़ा है जिसे न केवल अन्य थ्रेड्स से एक्सेस किया जा सकता है, बल्कि इसका अधिक कुशल कार्यान्वयन भी है। ConcurrentHashMap हैशटेबल की तुलना में बहुत अधिक कुशल है ।"

"आप वेक्टर, स्टैक, डिक्शनरी और हैशटेबल संग्रह का उपयोग कर सकते हैं, लेकिन इसकी अनुशंसा नहीं की जाती है।"

"मिल गया, मैं इसे ध्यान में रखूंगा।"

"धन्यवाद, ऐली!"