Sammenligningstabel
Grundlag for sammenligning | HashMap | LinkedHashMap |
---|---|---|
Grundlæggende | Indsætningsordren i HashMap er ikke bevaret. | Indsætningsordre bevares i LinkedHashMap. |
Datastruktur | HashMap bruger HashTable til at gemme kort. | LinkedHashMap bruger HashTable sammen med tilknyttet liste for at gemme kort. |
Strækker / Redskaber | HashMap udvider AbstractMap og implementerer Map interface. | LinkedHashMap udvider Hashmap. |
Version | HashMap blev introduceret i JDK 2.0. | LinkedHashMap blev introduceret i JDK 4.0. |
Overhead | Relativt 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
- Den vigtigste forskel er, at indsættelsesordren til HashMap ikke bevares, mens indsættelsesordren for LinkedHashMap bevares .
- 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 .
- 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.
- HashMap klasse blev introduceret i JDK 2.0 versionen. LinkedHashMap-klassen blev introduceret senere i JDK 4.0 version.
- 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.