"आणि शेवटी, मी तुम्हाला नकाशाबद्दल सांगेन."
"नकाशा, जसे की तुम्हाला माहिती आहे, की-व्हॅल्यू जोड्यांचा संच संग्रहित करतो. की अद्वितीय असणे आवश्यक आहे, परंतु मूल्ये काहीही असू शकतात. जर तुम्ही नकाशावर की-मूल्याची जोडी जोडली असेल आणि संग्रहामध्ये आधीच की समाविष्ट असेल, तर जुने व्हॅल्यू नव्याने बदलले जाईल. दुसऱ्या शब्दांत, की ही एक विशेष निर्देशांकासारखी कार्य करते जी कोणतीही वस्तू असू शकते ."
नकाशा ही एक गणितीय संज्ञा आहे जी (x, y) जोड्यांचा संच दर्शवते, ज्यामध्ये प्रत्येक अद्वितीय x काही y शी संबंधित आहे.
प्रोग्रामरना नकाशाची खूप आवड आहे, म्हणून आम्ही येथे 4 भिन्न संग्रह सादर करतो जे नकाशा इंटरफेस लागू करतात:
"त्याची साधी वारसा रचना येथे आहे:"
"पिवळा दर्शवितो की एंट्री नकाशा इंटरफेसमध्ये नेस्टेड इंटरफेस आहे ."
"एखाद्या घटक जोडीचे एकच अस्तित्व म्हणून वर्णन करण्यासाठी एंट्री जोडली गेली."
"ह्या नकाशा<K,V> च्या पद्धती आहेत:"
पद्धती | वर्णन |
---|---|
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() |
जोड्यांचा संच मिळविते. |
"K आणि V हे की आणि व्हॅल्यूजचे प्रकार पॅरामीटर्स आहेत."
"ठीक आहे, मी बर्याच पद्धतींशी परिचित आहे, परंतु मी त्यापैकी काहींशीच काम केले आहे."
"एन्ट्री क्लासबद्दल अजून काय सांगाल?"
"हा वर्ग घटकांच्या जोडीचे वर्णन करतो. यात काही पद्धती आहेत:"
पद्धती | वर्णन |
---|---|
K getKey() |
की-व्हॅल्यू जोडीची की मिळवते. |
V getValue() |
की-मूल्याच्या जोडीचे मूल्य मिळवते. |
V setValue(V value) |
की-व्हॅल्यू जोडीमध्ये नवीन मूल्य सेट करते. |
"प्रवेश करणे सोयीस्कर आहे, कारण तुम्ही संपूर्ण नकाशा पास न करता एका पद्धतीमध्ये जोडी पास करू शकता."
"मी बघतो."
"आता मी नकाशाच्या अंमलबजावणीवर जाईन."
"सर्वप्रथम हॅशमॅप आहे . हे घटक संचयित करण्यासाठी हॅश टेबल्स वापरते. की आणि मूल्ये कोणत्याही प्रकारच्या असू शकतात तसेच शून्य असू शकतात. संकलन बदलल्यावर घटकांचा क्रम बदलू शकतो ."
"एलिमेंट्स हॅशमॅपमध्ये ग्रुप्स किंवा बकेट्सचा एक सेट म्हणून संग्रहित केले जातात. घटकाची हॅशकोड() पद्धत ते कोणत्या बकेटमध्ये येते हे ठरवते."
"अगदी ढोबळपणे सांगायचे तर, 1 ते 100 पर्यंत हॅश कोड असलेले घटक पहिल्या बकेटमध्ये येतात, 101 ते 200 पर्यंतचे मूल्य दुसऱ्या बकेटमध्ये येतात आणि असेच."
"अशा प्रकारे घटक संचयित करण्याचा मुद्दा असा आहे की घटक शोधताना किंवा काढताना आम्ही असंबद्ध बकेटमधील सर्व घटक काढून टाकू शकतो."
"मी बघतो."
"हॅशमॅप बद्दल खरोखर एक चांगला लेख आहे. मी तुम्हाला तो वाचण्याची शिफारस करतो: https://medium.com/@mr.anmolsehgal/java-hashmap-internal-implementation-21597e1efec3 "
"दुसरा संग्रह LinkedHashMap आहे. HashMap मधील त्याचा मुख्य फरक असा आहे की ते आयटम लिंक्ड लिस्ट म्हणून देखील संग्रहित करते. सामान्य HashMap मध्ये, घटकांचा क्रम अपरिभाषित असतो आणि कालांतराने बदलू शकतो. आणि तुम्हाला 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, पण ऋषीने मला याबद्दल काही दिवसांपूर्वी सांगितले होते."
"ते कधी होतं?"
"जेव्हा तो SoftReference, WeakReference आणि PhantomReference बद्दल बोलला."
"मला तुमच्यावर विश्वास आहे, तुम्ही त्या सर्वांचे नाव बरोबर ठेवले आहे हे लक्षात घेऊन. मग आराम करा. आज रात्री भेटू."
"बाय, एली."
GO TO FULL VERSION