Diferența dintre HashMap și LinkedHashMap în Java

Autor: Laura McKinney
Data Creației: 2 Aprilie 2021
Data Actualizării: 10 Mai 2024
Anonim
Diferența dintre HashMap și LinkedHashMap în Java - Tehnologie
Diferența dintre HashMap și LinkedHashMap în Java - Tehnologie

Conţinut


HashMap și LinkedHashMap sunt clasele, destul de asemănătoare între ele și sunt utilizate pentru crearea unei hărți. Clasa HashMap extinde clasa AbstractMap pentru a utiliza un tabel hash pentru a stoca elementele din hartă. LinkedHashMap clasa păstrează intrările din hartă pe baza ordinii lor de inserare. Caracteristica care distinge HashMap și LinkedHashMap una de cealaltă este aceea că HashMap nu menține ordinea intrărilor stocate într-o hartă. Pe de altă parte, LinkedHashMap utilizează o structură de date hibridă pentru a menține ordinea intrărilor în care au fost introduse. În graficul de comparație de mai jos am explorat alte diferențe între HashMap și LinkedHashMap.

  1. Diagramă de comparație
  2. Definiție
  3. Diferențele cheie
  4. Concluzie

Diagramă de comparație

Baza pentru comparațieHashMapLinkedHashMap
De bazăOrdinea de inserție în HashMap nu este păstrată.Comanda de inserare este păstrată în LinkedHashMap.
Structură de dateHashMap folosește HashTable pentru a stoca hărți.LinkedHashMap utilizează HashTable împreună cu Linked Linked pentru a stoca harta.
Extinde Implementează /HashMap extinde AbstractMap și implementează interfața Map.LinkedHashMap extinde Hashmap.
VersiuneHashMap a fost introdus în JDK 2.0.LinkedHashMap a fost introdus în JDK 4.0.
deasupraComparativ mai puțin deasupra capului.Comparativ mai mult deasupra, deoarece trebuie să mențină ordinea intrărilor pe hartă.


Definiția HashMap

HashMap este o clasă care este folosită pentru a crea o hartă. Implementează Hartă Interfață. De asemenea, extinde AbstractMap clasă, astfel încât să poată folosi un tabel hash pentru a stoca intrările din hartă. Intrările hărții sunt a pereche în care fiecare cheie este asociată cu valoarea. Cheia din intrare este folosită pentru regăsirea valorii, deci, cheia trebuie să fie unică. Acesta este motivul pentru care cheile duplicate nu sunt permise în HashMap. Dar cheia din fiecare intrare a hărții poate avea un tip diferit, adică tastele din harta creată de HashMap pot fi eterogene. Structura de date utilizată de HashMap pentru stocarea unei hărți este un tabel hash.

Ordinea de inserare a intrărilor din HashMap nu este păstrată. Inserarea intrărilor în harta creată utilizând HashMap se bazează pe codul hash calculat de tastele din intrări. Dacă din greșeală ați introdus o cheie duplicată în HashMap, aceasta va înlocui valoarea anterioară a acestei chei cu noua valoare propusă și va returna valoarea veche. Dacă nu este utilizată nicio cheie duplicată și nu a avut loc nicio înlocuire, tasta va întoarce întotdeauna Nul. Să vedem cum se adaugă intrările pe harta hash cu următorul exemplu.


Hashmap hm = Hashmap new (); hm.put ("Ajay", 275); hm.put („Vijay”, 250); hm.put ("Jonny", 150); hm.put („Iordania”, 200); System.out.ln (hm); / * ieșire * / {Vijay = 250, Jonny = 150, Ajay = 275, Iordania = 200}

La fel ca în codul de mai sus, puteți vedea că am creat un obiect din HashMap și am adăugat intrările folosind metoda pune și când am editat obiectul HashMap, intrările nu sunt editate în ordinea în care au fost inserate. Prin urmare, nu puteți preface că ordinea intrărilor din HashMap se va întoarce. HashMap folosește toate metodele interfeței Map și a clasei AbstractMap și nu introduce nicio metodă nouă; are propriile sale constructoare. Capacitatea implicită a hărții hash este 16 iar raportul de umplere implicit este 0.75.

Definiția LinkedHashMap

LinkedHashMap este de asemenea o utilizare de clasă pentru a crea o hartă. LinkedHashMap extinde HashMap de clasă și a fost introdus ulterior HashMap în versiunea 4.0 JDK. Fiind clasa de copii din clasa HashMap LinkedHashMap este exact aceeași cu clasa HashMap, inclusiv constructorii și metodele. Dar, LinkedHashMap diferă în sensul că menține ordinea inserției intrărilor în hartă. Structura de date care este utilizată de LinkedHashMap pentru stocarea hărții este listă legată și masa de hash.

Pe lângă metodele moștenite de HashMap, LinkedHashMap introduce o nouă metodă care este removeEldestEntry (). Această metodă este utilizată pentru a elimina cea mai veche intrare pe hartă. Capacitatea implicită a LinkedHashMap este de 16, iar raportul implicit de umplere este de 0,75, care este, de asemenea, similar cu clasa HashMap.

  1. Cea mai importantă diferență este că ordinea de inserare a HashMap este nu se păstrează întrucât, ordinea de inserare a LinkedHashMap este conservat.
  2. Structura de date utilizată de HashMap pentru stocarea elementelor hărții este Hashtable. Pe de altă parte, structura de date utilizată de LinkedHashMap este Lista de legături și Hashtable.
  3. Clasa HashMap se extinde AbstractMap clasa si implementeaza Hartă interfață. Cu toate acestea, clasa LinkedHashMap este o clasă pentru copii HashMap clasa adică clasa LinkedHashMap extinde clasa HashMap.
  4. Clasa HashMap a fost introdusă în JDK 2.0 versiune. Clasa LinkedHashMap a fost introdusă ulterior în JDK 4.0 versiune.
  5. Comparativ, clasa LinkedHashMap are mai multe capete decât HashMap, deoarece trebuie să mențină ordinea elementelor inserate pe hartă.

Concluzie:

LinkedHashMap trebuie utilizat numai acolo unde suntem preocupați de secvența elementelor inserate pe hartă.