Recomandat, 2024

Alegerea Editorului

Diferența dintre HashMap și LinkedHashMap în Java

HashMap și LinkedHashMap sunt clasele, asemănătoare între ele și folosite pentru crearea unei hărți. Clasa HashMap extinde clasa AbstractMap pentru a folosi o tabelă hash pentru a stoca elementele în hartă. Clasa LinkedHashMap menține intrările în hartă pe baza ordinului de inserare. Caracteristica care distinge între ele HashMap și LinkedHashMap 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 inserate. În Graficul comparativ de mai jos am explorat câteva alte diferențe între HashMap și LinkedHashMap.

Diagramă de comparație

Bazele comparațieiHashMapLinkedHashMap
De bazăOrdinea de inserare în HashMap nu este păstrată.Ordinul de inserare este păstrat în LinkedHashMap.
Structură de dateHashMap utilizează HashTable pentru a stoca hărți.LinkedHashMap folosește HashTable împreună cu Listă asociată pentru stocarea hărții.
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.
deasupraComparabil mai puțin aeriene.Comparativ mai mult aeriene, deoarece trebuie să mențină ordinea intrărilor de hartă.

Definiția HashMap

HashMap este o clasă utilizată pentru a crea o hartă. Acesta implementează interfața hărții . Extinde, de asemenea, clasa AbstractMap astfel încât să poată utiliza o tabelă de tip hash pentru a stoca intrările în hartă. Intrările hărții reprezintă o pereche în care fiecare cheie este asociată cu valoarea. Cheia din intrare este utilizată pentru extragerea valorii, prin urmare, cheia trebuie să fie unică. De aceea, 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 a stoca o hartă este o tabelă hash.

Ordinea de inserare a intrărilor din HashMap nu este păstrată. Introducerea intrărilor în hartă creată folosind HashMap se bazează pe codul hash calculat de tastele din intrări. Dacă din greșeală ați introdus o cheie duplicat în HashMap, va înlocui valoarea anterioară a acelei chei cu noua valoare propusă și va reveni la valoarea veche. Dacă nu se utilizează nici o cheie dublă și nu sa efectuat nicio înlocuire, cheia întoarce întotdeauna Null. Să vedem cum să adăugăm intrările de pe harta hash cu următorul exemplu.

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

Ca și în codul de mai sus, puteți vedea că am creat un obiect al HashMap și am adăugat intrările utilizând metoda puts și când am tipărit obiectul HashMap, intrările nu sunt imprimate în ordinea în care au fost inserate. Prin urmare, nu puteți pretinde că ordinea intrărilor din HashMap va reveni. HashMap utilizează toate metodele de interfață Map și AbstractMap și nu introduce nici o metodă nouă; are constructori proprii. Capacitatea implicită a hărții hash este 16, iar raportul de umplere implicit este de 0, 75 .

Definiția LinkedHashMap

LinkedHashMap este de asemenea o clasă folosită pentru a crea o hartă. LinkedHashMap extinde clasa HashMap și a fost introdus mai târziu în HashMap în JDK versiunea 4.0. Fiind clasa copil a clasei HashMap LinkedHashMap este exact aceeași cu clasa HashMap, inclusiv constructorii și metodele. Dar, LinkedHashMap diferă într-un sens că menține ordinea inserării intrărilor în hartă. Structura de date utilizată de LinkedHashMap pentru a stoca harta este listă legată și tabelă hash .

În plus față de 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 de umplere implicit este de 0.75, care este, de asemenea, similar cu clasa HashMap.

Diferențe cheie între HashMap și LinkedHashMap în Java

  1. Cea mai importantă diferență este că ordinea de inserare a HashMap nu este păstrată, în timp ce ordinea de inserare a LinkedHashMap este păstrată .
  2. Structura de date utilizată de HashMap pentru a stoca elementele hărții este Hashtable . Pe de altă parte, structura de date utilizată de LinkedHashMap este lista legată și Hashtable .
  3. Clasa HashMap extinde clasa AbstractMap și implementează interfața hărții . Totuși, clasa LinkedHashMap este o clasă de clasă HashMap, adică clasa LinkedHashMap extinde clasa HashMap.
  4. Clasa HashMap a fost introdusă în versiunea JDK 2.0 . Clasa LinkedHashMap a fost introdusă ulterior în versiunea JDK 4.0 .
  5. Clasa comparativă LinkedHashMap are mai multă cheltuială decât HashMap, deoarece trebuie să mențină ordinea elementelor inserate în hartă.

Concluzie:

LinkedHashMap trebuie utilizat numai în cazul în care suntem preocupați de secvența elementelor inserate pe hartă.

Top