Anbefalet, 2021

Redaktørens Valg

Forskel mellem HashMap og LinkedHashMap i Java

HashMap og LinkedHashMap er klasserne, der ligner hinanden og bruges til at oprette et kort. HashMap klasse udvider klassen AbstractMap til at bruge et hashbord til at gemme elementerne i kortet. LinkedHashMap klasse opretholder posterne i kortet baseret på deres indsætningsrækkefølge. Funktionen, der skelner HashMap og LinkedHashMap fra hinanden, er, at Hashmap ikke opretholder rækkefølgen af ​​de gemte indgange i et kort. På den anden side bruger LinkedHashMap en hybrid datastruktur til at opretholde rækkefølgen af ​​indgange, hvori de blev indsat. I Sammenligningstabellen nedenfor undersøgte jeg nogle andre forskelle mellem HashMap og LinkedHashMap bare se nærmere.

Sammenligningstabel

Grundlag for sammenligningHashMapLinkedHashMap
GrundlæggendeIndsætningsordren i HashMap er ikke bevaret.Indsætningsordre bevares i LinkedHashMap.
DatastrukturHashMap bruger HashTable til at gemme kort.LinkedHashMap bruger HashTable sammen med tilknyttet liste for at gemme kort.
Strækker / RedskaberHashMap udvider AbstractMap og implementerer Map interface.LinkedHashMap udvider Hashmap.
VersionHashMap blev introduceret i JDK 2.0.LinkedHashMap blev introduceret i JDK 4.0.
OverheadRelativt mindre overhead.Forholdsvis mere overhead, fordi det skal opretholde rækkefølgen af ​​kortposterne.

Definition af HashMap

HashMap er en klasse, der bruges til at oprette et kort. Det implementerer Map Interface. Det udvider også kategorien AbstractMap, så det kan bruge et hashbord til at gemme posterne på kortet. Indlæg på kortet er et par, hvor hver nøgle er knyttet til værdien. Nøglen i posten bruges til at hente værdien, derfor skal nøglen være unik. Derfor er duplikatnøgler ikke tilladt i HashMap. Men nøglen i hver indgang på kortet kan have en anden type, dvs. nøglerne i kortet, der er oprettet af HashMap, kan være heterogene. Datastrukturen, som HashMap bruger til at gemme et kort, er et hashbord.

Indsætningsrækkefølgen for posterne i HashMap'en er ikke bevaret. Indsætningen af ​​poster i kortet, der er oprettet ved hjælp af HashMap, er baseret på hash-koden beregnet af tasterne i indgange. Hvis du ved en fejl indtastede en duplikatnøgle i HashMap, erstatter den tidligere værdi af den nøgle med den nye værdi, der foreslås, og returnerer den gamle værdi. Hvis der ikke anvendes en duplikatnøgle, og ingen udskiftning har fundet sted, returnerer nøglen altid Null. Lad os se, hvordan du tilføjer posterne til hash-kortet med følgende eksempel.

 Hashmap hm = ny Hashmap (); hm.put ("Ajay", 275); hm.put ("Vijay", 250); hm.put ("Jonny", 150); hm.put ("Jordan", 200); System.out.println (hm); / * output * / {Vijay = 250, Jonny = 150, Ajay = 275, Jordan = 200} 

Som i ovenstående kode kan du se, jeg oprettede et objekt af HashMap og tilføjede posterne ved hjælp af sætningsmetode, og når jeg udskrev HashMap-objektet, skrives posterne ikke i den rækkefølge, de blev indsat. Derfor kan du ikke lade ud, at rækkefølgen af ​​posterne i HashMap vender tilbage. HashMap bruger alle metoderne til Map interface og AbstractMap klasse og introducerer ikke nogen ny metode; den har sine egne konstruktører. Standardkapaciteten på hash-kortet er 16, og standardfyldningsforholdet er 0.75 .

Definition af LinkedHashMap

LinkedHashMap er også en klassebrug til at oprette et kort. LinkedHashMap udvider HashMap- klassen og blev introduceret senere til HashMap i JDK version 4.0. At være klassen HashMap Class LinkedHashMap er nøjagtig den samme som HashMap-klassen, herunder konstruktørerne og metoderne. Men, LinkedHashMap adskiller sig på en måde, at den vedligeholder rækkefølgen af ​​indsættelsen af ​​posterne i kortet. Datastrukturen, der bruges af LinkedHashMap til at gemme kortet, er knyttet til liste og hash-tabel .

Ud over de metoder, der er arvet af HashMap, introducerer LinkedHashMap en ny metode, der er removeEldestEntry () . Denne metode bruges til at fjerne den ældste post i kortet. Standardkapaciteten for LinkedHashMap er 16, og standardfyldningsforholdet er 0.75, hvilket også ligner HashMap-klassen.

Nøgleforskelle mellem HashMap og LinkedHashMap i Java

  1. Den vigtigste forskel er, at indsættelsesordren til HashMap ikke bevares, mens indsættelsesordren for LinkedHashMap bevares .
  2. Datastrukturen, som HashMap bruger til at gemme elementerne på kortet, er Hashtable . På den anden side er datastrukturen, der anvendes af LinkedHashMap, Links List og Hashtable .
  3. HashMap klasse udvider abstrakt mappe klasse og implementerer kort interface. Klassen LinkedHashMap er dog en klasse i klasse HashMap, dvs. LinkedHashMap-klassen udvider HashMap-klassen.
  4. HashMap klasse blev introduceret i JDK 2.0 versionen. LinkedHashMap-klassen blev introduceret senere i JDK 4.0 version.
  5. Comparativt LinkedHashMap klasse har mere overhead end HashMap, da det er nødvendigt at opretholde rækkefølgen af ​​de elementer, der er indsat i kortet.

Konklusion:

LinkedHashMap må kun bruges, hvor vi er bekymrede for rækkefølgen af ​​de elementer, der er indsat i kortet.

Top