"और अंत में, मैं आपको मैप के बारे में बताऊंगा।"

"मानचित्र, जैसा कि आप जानते हैं, कुंजी-मूल्य जोड़े का एक सेट संग्रहीत करता है। कुंजियाँ अद्वितीय होनी चाहिए, लेकिन मान कुछ भी हो सकते हैं। यदि आप मानचित्र में एक कुंजी-मूल्य जोड़ी जोड़ते हैं, और संग्रह में पहले से ही कुंजी है, तो पुराने मान को नए मान से बदल दिया जाएगा। दूसरे शब्दों में, कुंजी एक विशेष अनुक्रमणिका की तरह कार्य करती है जो कोई भी वस्तु हो सकती है। "

नक्शा एक गणितीय शब्द है जो (x, y) जोड़े के एक सेट को दर्शाता है, जिसमें प्रत्येक अद्वितीय x कुछ y से मेल खाता है।

प्रोग्रामर मैप के बहुत शौकीन हैं, इसलिए यहां हम 4 अलग-अलग संग्रह पेश करते हैं जो मैप इंटरफेस को लागू करते हैं:

"यहां इसकी सरल विरासत संरचना है:"

मानचित्र पदानुक्रम - 1

"पीला इंगित करता है कि प्रविष्टि मानचित्र इंटरफ़ेस में एक नेस्टेड इंटरफ़ेस है ।"

"एक इकाई के रूप में एक तत्व जोड़ी का वर्णन करने के लिए प्रविष्टि जोड़ी गई थी।"

"यहां मानचित्र <के, वी> के तरीके हैं:"

तरीकों विवरण
int size() मानचित्र में जोड़े की संख्या लौटाता है।
boolean isEmpty() जांचें कि नक्शा खाली है या नहीं।
boolean containsKey(Object key) क्या मानचित्र में निर्दिष्ट कुंजी है?
boolean containsValue(Object value) क्या मानचित्र में निर्दिष्ट मान है?
V get(Object key) निर्दिष्ट कुंजी के लिए मान लौटाता है।
V put(K key, V value) कुंजी के लिए एक नया मान सेट करता है।
विधि पुराना मान या शून्य लौटाती है
putAll(Map<? extends K, ? extends V> m) दूसरे मानचित्र से जोड़े जोड़ता है।
void clear() नक्शा साफ़ करता है, यानी सभी जोड़े हटा देता है।
Set<K>keySet() चाबियों का एक सेट लौटाता है।
Collection<V>values() मूल्यों का संग्रह लौटाता है।
Set<Map.Entry<K, V>>entrySet() जोड़े का एक सेट लौटाता है।

"के और वी कुंजी और मूल्यों के प्रकार पैरामीटर हैं।"

"ठीक है, मैं अधिकांश तरीकों से परिचित हूं, लेकिन मैंने उनमें से केवल कुछ के साथ काम किया है।"

"एंट्री क्लास के बारे में आप मुझे और क्या बता सकते हैं?"

"यह वर्ग तत्वों की एक जोड़ी का वर्णन करता है। इसकी कुछ विधियाँ हैं:"

तरीकों विवरण
getKey() की-वैल्यू जोड़ी की कुंजी लौटाता है।
getValue() की-वैल्यू पेयर का मान लौटाता है।
setValue(V value) की-वैल्यू पेयर में एक नया मान सेट करता है।

"प्रवेश सुविधाजनक है, क्योंकि आप पूरे मानचित्र को पारित किए बिना एक जोड़ी को एक विधि में पास कर सकते हैं।"

"अच्छा ऐसा है।"

"अब मैं मानचित्र कार्यान्वयन पर जाऊंगा।"

"सबसे पहले हैश मैप । यह तत्वों को स्टोर करने के लिए हैश टेबल का उपयोग करता है। कुंजी और मान किसी भी प्रकार के साथ-साथ शून्य भी हो सकते हैं। संग्रह में परिवर्तन होने पर तत्वों का क्रम बदल सकता है ।"

"तत्वों को समूह या बाल्टी के सेट के रूप में हैश मैप में संग्रहीत किया जाता है। एक तत्व का हैशकोड() विधि निर्धारित करता है कि यह किस बाल्टी में पड़ता है।"

"बहुत मोटे तौर पर, 1 से 100 तक के हैश कोड वाले तत्व पहली बकेट में आते हैं, 101 से 200 के मान वाले दूसरे बकेट में आते हैं, और इसी तरह।"

"तत्वों को इस तरह से संग्रहीत करने का बिंदु यह है कि हम तत्वों को खोजते या हटाते समय अप्रासंगिक बाल्टियों में सभी तत्वों को समाप्त कर सकते हैं।"

"अच्छा ऐसा है।"

"HashMap के बारे में वास्तव में एक अच्छा लेख है। मेरा सुझाव है कि आप इसे पढ़ें: https://medium.com/@mr.anmolsehgal/java-hashmap-internal-implementation-21597e1efec3 "

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

"LinkedHashMap के बारे में वास्तव में एक अच्छा लेख है। ये रहा: https://medium.com/@mr.anmolsehgal/java-linkedhashmap-internal-implementation-44e2e2893036 "

"आज मैं जिस तीसरे संग्रह के बारे में बात करना चाहता हूं वह है TreeMap ।"

" TreeMap अपने तत्वों को आरोही क्रम में क्रमबद्ध रखता है। यह इस तथ्य के कारण प्राप्त होता है कि ट्रीमैप तत्वों को संग्रहीत करने के लिए एक संतुलित लाल-काले पेड़ का उपयोग करता है।"

"परिणामस्वरूप, सम्मिलन समय और खोज समय बहुत कम है। बहुत बड़ी मात्रा में डेटा का उपयोग करते समय यह वर्ग एक बढ़िया विकल्प है।"

"और, ज़ाहिर है, हमारे पास TreeMap पर एक लेख है: https://medium.com/xebia-engineering/treemap-internals-199e0e0050b5 "

"मैंने आपको अभी तक क्या नहीं बताया?"

"WeakHashMap, लेकिन ऋषि ने कुछ दिनों पहले मुझे इसके बारे में बताया था।"

"वह कब था?"

"जब उन्होंने सॉफ्ट रेफरेंस, वीक रेफरेंस और फैंटम रेफरेंस के बारे में बात की।"

"मैं आप पर विश्वास करता हूं, यह देखते हुए कि आपने उन सभी का सही नाम रखा है। फिर आराम से जाएं। आज रात मिलते हैं।"

"अलविदा, ऐली।"