Különbség a HashMap és a LinkedHashMap között a Java-ban

Szerző: Laura McKinney
A Teremtés Dátuma: 2 Április 2021
Frissítés Dátuma: 10 Lehet 2024
Anonim
Különbség a HashMap és a LinkedHashMap között a Java-ban - Technológia
Különbség a HashMap és a LinkedHashMap között a Java-ban - Technológia

Tartalom


A HashMap és a LinkedHashMap az osztályok, nagyon hasonlóak egymáshoz, és térképeket készítenek. A HashMap osztály az AbstractMap osztályt kibővíti egy hash táblával az elemek tárolására a térképen. A LinkedHashMap osztály a bejegyzés sorrendje alapján fenntartja a bejegyzéseket a térképen. A HashMap és a LinkedHashMap egymástól megkülönböztető szolgáltatás az, hogy HashMap nem tartja fenn a térképen tárolt bejegyzések sorrendjét. Másrészről, LinkedHashMap hibrid adatstruktúrát használ annak a sorrendnek a fenntartására, amelybe beillesztették. Az alábbi összehasonlító táblázatban néhány más különbséget fedeztem fel a HashMap és a LinkedHashMap között.


  1. Összehasonlító táblázat
  2. Meghatározás
  3. Főbb különbségek
  4. Következtetés

Összehasonlító táblázat

Az összehasonlítás alapjaHashMapLinkedHashMap
AlapvetőA beszúrási sorrend a HashMap-ben nem marad meg.A beszúrási sorrend megőrződik a LinkedHashMap-ban.
Az adatok felépítéseA HashMap a HashTable segítségével térképeket tárol.A LinkedHashMap a HashTable-t és a Linked List-ot használja a térkép tárolására.
Kiterjeszti / MunkagépekA HashMap kibővíti az AbstractMap alkalmazást, és végrehajtja a Térkép felületet.A LinkedHashMap kiterjeszti a Hashmap-et.
VáltozatA HashMap a JDK 2.0-ban került bevezetésre.A LinkedHashMap a JDK 4.0-ban került bevezetésre.
FelsőÖsszehasonlítva kevesebb fölött.Viszonylag több fej, mert meg kell őriznie a térképbejegyzések sorrendjét.


Meghatározása HashMap

A HashMap egy osztály, amelyet térkép létrehozására használnak. Végrehajtja Térkép Felület. Ez kiterjeszti a AbstractMap osztályba, hogy hash táblát használjon a tételek tárolására a térképen. A térkép bejegyzései a pár, ahol minden kulcs hozzá van rendelve az értékhez. A bejegyzésben szereplő kulcsot az érték lekérésére használják, ezért a kulcsnak egyedinek kell lennie. Ezért nem engedélyezett a másolatos kulcsok használata a HashMap alkalmazásban. A térkép minden egyes bejegyzésének kulcsa eltérő lehet, azaz a HashMap által létrehozott térkép kulcsa heterogén lehet. A HashMap által a térkép tárolására használt adatszerkezet hash table.

A HashMap bejegyzéseinek beillesztési sorrendje nem marad meg. A bejegyzések beillesztése a HashMap segítségével létrehozott térképbe a bejegyzésben szereplő kulcsok által kiszámított hash-kód alapján történik. Ha véletlenül bemásolt kulcsot a HashMap-be, akkor a kulcs korábbi értékét kicseréli a javasolt új értékre, és visszatér a régi érték. Ha nem használ másolatot, és nincs csere, a kulcs mindig Null értéket ad vissza. Nézzük meg, hogyan adhatjuk hozzá a bejegyzéseket a hash térképhez a következő példával.

Hashmap hm = új Hashmap (); hm.put ("Ajay", 275); hm.put ("Vijay", 250); hm.put ("Jonny", 150); hm.put ("Jordan", 200); System.out.ln (hm); / * output * / {Vijay = 250, Jonny = 150, Ajay = 275, Jordánia = 200}

Mint a fenti kódban, láthatjuk, hogy létrehoztam egy HashMap objektumot, és hozzáadtam a bejegyzéseket put módszerrel, és amikor a HashMap objektumot szerkesztettem, a bejegyzéseket nem abban a sorrendben szerkesztik, ahogyan beillesztették. Ezért nem állíthatja, hogy a HashMap bejegyzései visszatérnek. A HashMap a Map interfész és az AbstractMap osztály összes módszerét használja, és nem vezet be új módszert; saját konstruktorokkal rendelkezik. A hash térkép alapértelmezett kapacitása 16 és az alapértelmezett kitöltési arány: 0.75.

Meghatározása LinkedHashMap

A LinkedHashMap egy osztályú térképkészítés is. A LinkedHashMap kiterjeszti a HashMap osztályba, majd később bevezették a HashMap-hez a JDK 4.0 verziójában. A LinkedHashMap HashMap osztály gyermek osztálya létezése pontosan megegyezik a HashMap osztálytal, beleértve a kivitelezőket és a módszereket. A LinkedHashMap azonban abban az értelemben különbözik, hogy fenntartja a bejegyzések térképen történő beillesztésének sorrendjét. Az a szerkezet, amelyet a LinkedHashMap a térkép tárolására használ, az csatolt lista és hash asztal.

A HashMap által örökölt módszerek mellett a LinkedHashMap bevezet egy új módszert is, azaz a removeEldestEntry (). Ezt a módszert a térkép legrégebbi bejegyzésének eltávolítására használják. A LinkedHashMap alapértelmezett kapacitása 16, az alapértelmezett kitöltési arány 0,75, amely szintén hasonló a HashMap osztályhoz.

  1. A legfontosabb különbség az, hogy a HashMap beillesztési sorrendje nem tartósított mivel a LinkedHashMap beillesztési sorrendje: konzervált.
  2. A térképi elemek tárolására a HashMap által használt adatszerkezet az hash. Másrészt a LinkedHashMap által használt adatszerkezet az Kapcsolódó lista és hash.
  3. A HashMap osztály kibővül AbstractMap osztály és végrehajtja a Térkép felület. A LinkedHashMap osztály azonban egy gyermek osztály HashMap osztály, azaz a LinkedHashMap osztály kibővíti a HashMap osztályt.
  4. A HashMap osztályt a JDK 2.0 változat. A LinkedHashMap osztályt később, 2006-ban vezették be JDK 4.0 változat.
  5. A LinkedHashMap osztályhoz viszonyítva nagyobb a fejléc, mint a HashMap-nek, mivel a térképen beillesztett elemek rendjének meg kell őriznie.

Következtetés:

A LinkedHashMap csak akkor használható, ha aggódunk a térképen beillesztett elemek sorrendje miatt.