– É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:"

"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 |
---|---|
K getKey() |
A kulcs-érték pár kulcsát adja vissza. |
V getValue() |
A kulcs-érték pár értékét adja vissza. |
V 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.
GO TO FULL VERSION