"At sa wakas, sasabihin ko sa iyo ang tungkol sa Mapa."

"Ang Map, tulad ng alam mo, ay nag-iimbak ng isang hanay ng mga pares ng key-value. Ang mga susi ay dapat na natatangi, ngunit ang mga halaga ay maaaring maging anuman. Kung nagdagdag ka ng key-value na pares sa isang Map, at ang koleksyon ay naglalaman na ng susi, kung gayon ang lumang halaga ay papalitan ng bago. Sa madaling salita, ang susi ay kumikilos tulad ng isang espesyal na index na maaaring maging anumang bagay ."

Ang mapa ay isang mathematical term na nagsasaad ng set ng (x, y) na mga pares, kung saan ang bawat natatanging x ay tumutugma sa ilang y.

Ang mga programmer ay gustung-gusto ng Map, kaya narito kami ay nagpapakita ng 4 na magkakaibang mga koleksyon na nagpapatupad ng Map interface:

"Narito ang simpleng inheritance structure nito:"

Hierarchy ng mapa - 1

"Ang dilaw ay nagpapahiwatig na ang Entry ay isang nested interface sa Map interface."

"Idinagdag ang entry upang ilarawan ang isang pares ng elemento bilang isang entity."

"Narito ang mga pamamaraan ng Map<K,V>:"

Paraan Paglalarawan
int size() Ibinabalik ang bilang ng mga pares sa mapa.
boolean isEmpty() Sinusuri kung walang laman ang mapa.
boolean containsKey(Object key) Naglalaman ba ang mapa ng tinukoy na susi?
boolean containsValue(Object value) Naglalaman ba ang mapa ng tinukoy na halaga?
V get(Object key) Ibinabalik ang halaga para sa tinukoy na key.
V put(K key, V value) Nagtatakda ng bagong halaga para sa susi.
Ibinabalik ng pamamaraan ang lumang halaga o null
putAll(Map<? extends K, ? extends V> m) Nagdaragdag ng mga pares mula sa isa pang mapa.
void clear() Nililinis ang mapa, ibig sabihin, inaalis ang lahat ng pares.
Set<K>keySet() Nagbabalik ng Set ng mga susi.
Collection<V>values() Nagbabalik ng koleksyon ng mga halaga.
Set<Map.Entry<K, V>>entrySet() Nagbabalik ng isang Set ng mga pares.

"Ang K at V ay ang uri ng mga parameter para sa mga susi at halaga."

"Buweno, pamilyar ako sa karamihan ng mga pamamaraan, ngunit nagtrabaho lamang ako sa ilan sa kanila."

"Ano pa ang masasabi mo sa akin tungkol sa Entry class?"

"Inilalarawan ng klase na ito ang isang pares ng mga elemento. Mayroon itong ilang mga pamamaraan:"

Paraan Paglalarawan
getKey() Ibinabalik ang key ng key-value pair.
getValue() Ibinabalik ang value ng key-value pair.
setValue(V value) Nagtatakda ng bagong value sa key-value pair.

"Maginhawa ang pagpasok, dahil maaari mong ipasa ang isang pares sa isang pamamaraan nang hindi ipinapasa ang buong mapa."

"Nakita ko."

"Ngayon, tatalakayin ko ang mga pagpapatupad ng Mapa."

"Una ang HashMap . Gumagamit ito ng mga hash table upang mag-imbak ng mga elemento. Ang mga key at value ay maaaring maging anumang uri, pati na rin ang null. Maaaring magbago ang pagkakasunud-sunod ng mga elemento kapag nagbago ang koleksyon ."

"Ang mga elemento ay nakaimbak sa isang HashMap bilang isang hanay ng mga grupo o mga bucket. Ang hashCode() na pamamaraan ng isang elemento ay tumutukoy kung saang bucket ito mahuhulog."

"Sa halos lahat, ang mga elemento na may hash code mula 1 hanggang 100 ay nahuhulog sa unang bucket, ang mga may halaga mula 101 hanggang 200 ay nahuhulog sa pangalawa, at iba pa."

"Ang punto ng pag-iimbak ng mga elemento sa ganitong paraan ay maaari nating alisin ang lahat ng elemento sa mga hindi nauugnay na bucket kapag naghahanap o nag-aalis ng mga elemento."

"Nakita ko."

"May napakagandang artikulo tungkol sa HashMap. Inirerekomenda ko na basahin mo ito: https://medium.com/@mr.anmolsehgal/java-hashmap-internal-implementation-21597e1efec3 "

"Ang pangalawang koleksyon ay LinkedHashMap . Ang pangunahing pagkakaiba nito sa HashMap ay nag-iimbak din ito ng mga item bilang isang naka-link na listahan. Sa isang ordinaryong HashMap, ang pagkakasunud-sunod ng mga elemento ay hindi natukoy at maaaring magbago sa paglipas ng panahon. At maaari kang makakuha ng isang iterator mula sa isang LinkedHashMap at gamitin ito upang talakayin ang lahat ng elemento sa pagkakasunud-sunod na idinagdag sa LinkedHashMap. Bukod pa rito, ang LinkedHashMap ay may isang iterator na hinahayaan kang maglakad sa lahat ng mga pares sa pagkakasunud-sunod ng huling paggamit/aktibidad."

"May napakagandang artikulo tungkol sa LinkedHashMap. Narito ka: https://medium.com/@mr.anmolsehgal/java-linkedhashmap-internal-implementation-44e2e2893036 "

"Ang ikatlong koleksyon na gusto kong pag-usapan ngayon ay TreeMap ."

" Pinapanatili ng TreeMap ang mga elemento nito na pinagsunod-sunod sa pataas na pagkakasunud-sunod. Ito ay nakamit dahil sa katotohanan na ang TreeMap ay gumagamit ng balanseng pula-itim na puno upang mag-imbak ng mga elemento."

"Bilang resulta, ang oras ng pagpapasok at oras ng paghahanap ay napakababa. Ang klase na ito ay isang mahusay na pagpipilian kapag gumagamit ng napakaraming data."

"At, siyempre, mayroon kaming isang artikulo sa TreeMap: https://medium.com/xebia-engineering/treemap-internals-199e0e0050b5 "

"Anong hindi ko pa nasasabi sayo?"

"WeakHashMap, ngunit sinabi sa akin ni Rishi ang tungkol dito ilang araw ang nakalipas."

"Kailan iyon?"

"Nang pinag-usapan niya ang SoftReference, WeakReference, at PhantomReference."

"I believe you, considering that you named them all correctly. Then go relax. See you tonight."

"Bye, Ellie."