"Og til slutt skal jeg fortelle deg om Map."

"Map, som du vet, lagrer et sett med nøkkelverdi-par. Nøklene må være unike, men verdiene kan være hva som helst. Hvis du legger til et nøkkelverdi-par til et kart, og samlingen allerede inneholder nøkkelen, så den gamle verdien vil bli erstattet med den nye. Med andre ord, nøkkelen fungerer som en spesiell indeks som kan være et hvilket som helst objekt ."

Kart er et matematisk begrep som betegner et sett med (x, y) par, der hver unike x tilsvarer noen y.

Programmerere er veldig glad i Map, så her presenterer vi 4 forskjellige samlinger som implementerer Map-grensesnittet:

"Her er den enkle arvestrukturen:"

Karthierarki - 1

"Det gule indikerer at Entry er et nestet grensesnitt i kartgrensesnittet . "

"Oppføring ble lagt til for å beskrive et elementpar som en enkelt enhet."

"Her er metodene for Map<K,V>:"

Metoder Beskrivelse
int size() Returnerer antall par i kartet.
boolean isEmpty() Sjekker om kartet er tomt.
boolean containsKey(Object key) Inneholder kartet den angitte nøkkelen?
boolean containsValue(Object value) Inneholder kartet den angitte verdien?
V get(Object key) Returnerer verdien for den angitte nøkkelen.
V put(K key, V value) Angir en ny verdi for nøkkelen.
Metoden returnerer den gamle verdien eller null
putAll(Map<? extends K, ? extends V> m) Legger til par fra et annet kart.
void clear() Tømmer kartet, dvs. fjerner alle par.
Set<K>keySet() Returnerer et sett med nøkler.
Collection<V>values() Returnerer en samling verdier.
Set<Map.Entry<K, V>>entrySet() Returnerer et sett med par.

"K og V er typeparametrene for nøklene og verdiene."

"Vel, jeg er kjent med de fleste metodene, men jeg har bare jobbet med noen av dem."

"Hva annet kan du fortelle meg om inngangsklassen?"

"Denne klassen beskriver et par elementer. Den har noen få metoder:"

Metoder Beskrivelse
getKey() Returnerer nøkkelen til nøkkelverdi-paret.
getValue() Returnerer verdien til nøkkelverdi-paret.
setValue(V value) Angir en ny verdi i nøkkelverdi-paret.

"Entry er praktisk, fordi du kan sende et par til en metode uten å passere hele kartet."

"Jeg skjønner."

"Nå skal jeg gå gjennom kartimplementeringer."

"Først ut er HashMap . Den bruker hashtabeller for å lagre elementer. Nøkler og verdier kan være av hvilken som helst type, så vel som null. Rekkefølgen på elementene kan endres når samlingen endres ."

"Elementer er lagret i et HashMap som et sett med grupper eller buckets. Et elements hashCode()-metode bestemmer hvilken bucket det faller inn i."

"Veldig grovt sett faller elementer med en hash-kode fra 1 til 100 inn i den første bøtten, de med en verdi fra 101 til 200 faller inn i den andre, og så videre."

"Poenget med å lagre elementer på denne måten er at vi kan eliminere alle elementene i irrelevante bøtter når vi søker etter eller fjerner elementer."

"Jeg skjønner."

"Det er en veldig bra artikkel om HashMap. Jeg anbefaler at du leser den: https://medium.com/@mr.anmolsehgal/java-hashmap-internal-implementation-21597e1efec3 "

"Den andre samlingen er LinkedHashMap . Hovedforskjellen fra HashMap er at den også lagrer elementer som en koblet liste. I en vanlig HashMap er rekkefølgen på elementene udefinert og kan endres over tid. Og du kan få en iterator fra en LinkedHashMap og bruk den til å gå gjennom alle elementene i den rekkefølgen de ble lagt til i LinkedHashMap. I tillegg har LinkedHashMap en iterator som lar deg gå gjennom alle parene i rekkefølge etter siste bruk/aktivitet."

"Det er en veldig bra artikkel om LinkedHashMap. Her kan du: https://medium.com/@mr.anmolsehgal/java-linkedhashmap-internal-implementation-44e2e2893036 "

"Den tredje samlingen jeg vil snakke om i dag er TreeMap ."

" TreeMap holder elementene sortert i stigende rekkefølge. Dette oppnås på grunn av det faktum at TreeMap bruker et balansert rød-svart tre for å lagre elementer."

"Som et resultat er innsettingstid og søketid veldig lav. Denne klassen er et godt valg når du bruker svært store datamengder."

"Og selvfølgelig har vi en artikkel om TreeMap: https://medium.com/xebia-engineering/treemap-internals-199e0e0050b5 "

"Hva har jeg ikke fortalt deg om ennå?"

"WeakHashMap, men Rishi fortalte meg om det for et par dager siden."

"Når var det?"

"Da han snakket om SoftReference, WeakReference og PhantomReference."

"Jeg tror deg, med tanke på at du navngav dem alle riktig. Så slapp av. Vi sees i kveld."

"Hei, Ellie."