Összehasonlító táblázat
Az összehasonlítás alapja | HashMap | LinkedHashMap |
---|---|---|
Alapvető | A HashMap beillesztési sorrendje nem marad meg. | A beillesztési sorrend a LinkedHashMap-ban megmarad. |
Adatszerkezet | A HashMap a HashTable-ot használja a térképek tárolására. | A LinkedHashMap a HashTable-ot és a Linked List-ot használja a térkép tárolásához. |
Kiterjeszti / Munkagépek | A HashMap kiterjeszti az AbstractMap alkalmazást és végrehajtja a Map felületét. | A LinkedHashMap kiterjeszti a Hashmap-ot. |
Változat | A HashMap a JDK 2.0-ban került bevezetésre. | A LinkedHashMap a JDK 4.0-ban került bevezetésre. |
Felső | Összehasonlítva kevésbé rezsi. | Összehasonlítva a többletköltség, mert meg kell őriznie a térképbejegyzések sorrendjét. |
A HashMap meghatározása
A HashMap egy osztály, amelyet egy térkép létrehozására használnak. A Map Interface-et hajtja végre. Ezenkívül kiterjeszti az AbstractMap osztályt, hogy hash táblázattal tárolhassa a bejegyzéseket a térképen. A térkép bejegyzései egy pár, ahol minden kulcs hozzá van rendelve az értékhez. A bejegyzés kulcsát az érték lekérésére használják, ezért a kulcsnak egyedinek kell lennie. Ezért a HashMap-ban nem engedélyezettek az ismétlődő kulcsok. A térkép minden egyes bejegyzésének kulcsa azonban eltérő lehet, azaz a HashMap által létrehozott térkép kulcsai heterogének lehetnek. A HashMap által a térkép tárolására használt adatszerkezet hash tábla.
A HashMap-ben lévő bejegyzések beillesztési sorrendje nem marad meg. A HashMap használatával létrehozott térképek beillesztése a bejegyzésben szereplő gombok által kiszámított hash kódon alapul. Ha véletlenül beírta a HashMap-ba egy ismétlődő kulcsot, akkor a kulcs korábbi értékét a javasolt új értékkel helyettesíti, és visszaadja a régi értéket. Ha nem használ kettős kulcsot, és nincs helyettesítés, a kulcs mindig Null-ot ad vissza. Lássuk, hogyan kell hozzáadni 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.println (hm); / * kimenet * / {Vijay = 250, Jonny = 150, Ajay = 275, Jordánia = 200}
A fenti kódhoz hasonlóan láthatjuk, hogy létrehoztam egy HashMap objektumot, és hozzáadtam a bejegyzéseket a puts módszerrel, és amikor a HashMap objektumot kinyomtattam, a bejegyzések nem kerülnek nyomtatásra a beillesztett sorrendben. Ennélfogva nem tehetjük meg, hogy a HashMap bejegyzéseinek sorrendje visszatér. A HashMap a Map interfész és az AbstractMap osztály összes módját használja, és nem vezet be új módszert; saját építője van. A hash térkép alapértelmezett kapacitása 16 és az alapértelmezett kitöltési arány 0, 75 .
A LinkedHashMap meghatározása
A LinkedHashMap egy osztályhasználat is egy térkép létrehozásához. A LinkedHashMap kiterjeszti a HashMap osztályt, és később a HashMap-ba vitték be a JDK 4.0 verziójában. A HashMap osztály gyermekosztálya a LinkedHashMap pontosan ugyanaz, mint a HashMap osztály, beleértve a konstruktorokat és módszereket is. De a LinkedHashMap abban az értelemben különbözik, hogy fenntartja a bejegyzések beillesztésének sorrendjét a térképen. A LinkedHashMap által a térkép tárolásához használt adatszerkezet összekapcsolt lista és hash táblázat .
A HashMap által örökölt módszerek mellett a LinkedHashMap egy új metódusot mutat be, amely eltávolítja azEldestEntry () -t . Ez a módszer a térkép legrégebbi bejegyzésének eltávolítására szolgál. A LinkedHashMap alapértelmezett kapacitása 16, és az alapértelmezett kitöltési arány 0, 75, ami szintén hasonló a HashMap osztályhoz.
Jelentős különbségek a HashMap és a LinkedHashMap között Java-ban
- A legfontosabb különbség az, hogy a HashMap beillesztési sorrendje nem marad meg, míg a LinkedHashMap beillesztési sorrendje megmarad .
- A HashMap által a térkép elemeinek tárolására használt adatszerkezet Hashtable . Másrészről a LinkedHashMap által használt adatszerkezet összekapcsolt lista és Hashtable.
- A HashMap osztály kiterjeszti az AbstractMap osztályt és végrehajtja a Térkép felületet. A LinkedHashMap osztály azonban a HashMap osztály gyermekosztálya, azaz a LinkedHashMap osztály kiterjeszti a HashMap osztályt.
- A HashMap osztály bevezetése a JDK 2.0 verzióban történt. A LinkedHashMap osztály később a JDK 4.0 verzióban került bevezetésre.
- Összehasonlítóan a LinkedHashMap osztálynak több a feje, mint a HashMap, mivel meg kell őriznie a térképbe helyezett elemek sorrendjét.
Következtetés:
A LinkedHashMap csak akkor használható, ha aggódunk a térképbe helyezett elemek sorrendjében.