– És végre, mesélek a Mapről.

"A Map, mint tudod, kulcs-érték párokat tárol. A kulcsoknak egyedinek kell lenniük, de az értékek bármiek lehetnek. Ha hozzáad egy kulcs-érték párt egy térképhez, és a gyűjtemény már tartalmazza a kulcsot, akkor a régi érték lecserélődik az újra. Más szóval a kulcs speciális indexként működik, amely bármilyen objektum lehet ."

A térkép egy matematikai kifejezés, amely (x, y) párok halmazát jelöli, amelyben minden egyedi x valamilyen y-nak felel meg.

A programozók nagyon szeretik a térképet, ezért itt bemutatunk 4 különböző gyűjteményt, amelyek megvalósítják a Map felületet:

"Íme az egyszerű öröklődési struktúra:"

Térképhierarchia – 1

"A sárga azt jelzi, hogy az Entry egy beágyazott felület a térképes felületen."

"Bejegyzés hozzáadva egy elempár egyetlen entitásként való leírásához."

"Íme a Map<K,V> metódusai:"

Mód Leírás
int size() A párok számát adja vissza a térképen.
boolean isEmpty() Ellenőrzi, hogy a térkép üres-e.
boolean containsKey(Object key) A térkép tartalmazza a megadott kulcsot?
boolean containsValue(Object value) A térkép tartalmazza a megadott értéket?
V get(Object key) A megadott kulcs értékét adja vissza.
V put(K key, V value) Új értéket állít be a kulcshoz.
A metódus a régi értéket vagy nullát adja vissza
putAll(Map<? extends K, ? extends V> m) Párokat ad hozzá egy másik térképről.
void clear() Törli a térképet, azaz eltávolítja az összes párt.
Set<K>keySet() Egy kulcskészletet ad vissza.
Collection<V>values() Értékgyűjteményt ad vissza.
Set<Map.Entry<K, V>>entrySet() Párok halmazát adja vissza.

"K és V a kulcsok és értékek típusparaméterei."

– Nos, a legtöbb módszert ismerem, de csak néhányukkal dolgoztam.

– Mit tud még mesélni a Belépő osztályról?

"Ez az osztály egy pár elemet ír le. Van néhány metódusa:"

Mód Leírás
getKey() A kulcs-érték pár kulcsát adja vissza.
getValue() A kulcs-érték pár értékét adja vissza.
setValue(V value) Új értéket állít be a kulcs-érték párban.

"A belépés kényelmes, mert átadhat egy párt egy metódusnak anélkül, hogy átadná a teljes térképet."

"Látom."

"Most átnézem a térkép megvalósításait."

"Először a HashMap . Kivonattáblázatokat használ az elemek tárolására. A kulcsok és értékek bármilyen típusúak lehetnek, akár nullak is. Az elemek sorrendje változhat, ha a gyűjtemény megváltozik ."

"Az elemek a HashMap-ben csoportok vagy gyűjtők halmazaként vannak tárolva. Az elemek hashCode() metódusa határozza meg, hogy melyik tárolóba kerüljön."

"Nagyon durván fogalmazva, az 1-től 100-ig terjedő hash-kóddal rendelkező elemek az első vödörbe, a 101-től 200-ig terjedő értékűek a másodikba, és így tovább."

"Az elemek ilyen módon történő tárolásának az a lényege, hogy az elemek keresése vagy eltávolítása során az összes irreleváns vödrökben lévő elemet eltávolíthatjuk."

"Látom."

"Van egy nagyon jó cikk a HashMapről. Javaslom, hogy olvassa el: https://medium.com/@mr.anmolsehgal/java-hashmap-internal-implementation-21597e1efec3 "

"A második gyűjtemény a LinkedHashMap . A fő különbség a HashMap-től, hogy az elemeket is linkelt listaként tárolja. Egy átlagos HashMap-ben az elemek sorrendje nincs meghatározva, és idővel változhat. A LinkedHashMap-ből pedig iterátort kaphat és segítségével végigjárhatja az összes elemet abban a sorrendben, ahogyan azokat hozzáadták a LinkedHashMaphez. Ezenkívül a LinkedHashMap rendelkezik egy iterátorral, amely lehetővé teszi, hogy az összes páron végigmenjen az utolsó használat/tevékenység sorrendjében."

"Van egy nagyon jó cikk a LinkedHashMapről. Tessék: https://medium.com/@mr.anmolsehgal/java-linkedhashmap-internal-implementation-44e2e2893036 "

"A harmadik gyűjtemény, amelyről ma beszélni szeretnék, a TreeMap ."

" A TreeMap elemeit növekvő sorrendben tartja. Ez annak köszönhető, hogy a TreeMap kiegyensúlyozott piros-fekete fát használ az elemek tárolására."

"Ennek eredményeként a beillesztési idő és a keresési idő nagyon alacsony. Ez az osztály nagyszerű választás nagyon nagy adatmennyiség használata esetén."

"És természetesen van egy cikkünk a TreeMapről: https://medium.com/xebia-engineering/treemap-internals-199e0e0050b5 "

– Miről nem beszéltem még?

"WeakHashMap, de Rishi mesélt róla pár napja."

"Ez mikor volt?"

– Amikor a SoftReference-ről, a WeakReference-ről és a PhantomReference-ről beszélt.

"Hiszek neked, tekintve, hogy mindegyiket helyesen nevezted el. Akkor menj pihenni. Találkozunk ma este."

– Viszlát, Ellie.