Forskellen mellem HashMap og LinkedHashMap i Java
Indhold
HashMap og LinkedHashMap er klasser, der ligner hinanden meget og bruges til at oprette et kort. HashMap-klassen udvider klassen AbstractMap til at bruge en hash-tabel til at gemme elementerne på kortet. LinkedHashMap klassen opretholder posterne på kortet baseret på deres indsættelsesrækkefølge. Funktionen, der adskiller HashMap og LinkedHashMap fra hinanden, er den HashMap opretholder ikke rækkefølgen af de gemte poster på et kort. På den anden side, LinkedHashMap bruger en hybrid datastruktur til at bevare rækkefølgen af poster, som de blev indsat i. I sammenligningstabellen nedenfor udforskede jeg nogle andre forskelle mellem HashMap og LinkedHashMap bare kig.
- Sammenligningstabel
- Definition
- Vigtige forskelle
- Konklusion
Sammenligningstabel
Grundlag for sammenligning | HashMap | LinkedHashMap |
---|---|---|
Grundlæggende | Indsættelsesrækkefølge i HashMap bevares ikke. | Indsætningsordre bevares i LinkedHashMap. |
Datastruktur | HashMap bruger HashTable til at gemme kort. | LinkedHashMap bruger HashTable sammen med Linked List til at gemme kort. |
Udvider / Gennemfører | 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 | Forholdsvis mindre overhead. | Forholdsmæssigt mere overhead, fordi det skal opretholde rækkefølgen af kortindgange. |
Definition af HashMap
HashMap er en klasse, der bruges til at oprette et kort. Det implementerer Kort Interface. Det udvider også AbstractMap klasse, så den kan bruge en hash-tabel til at gemme posterne på kortet. Indtastninger af kortet er en Indsætningsrækkefølgen for posterne i HashMap bevares ikke. Indsættelse af poster på kortet oprettet ved hjælp af HashMap er baseret på hash-koden beregnet af tasterne i posterne. Hvis du ved en fejltagelse har indtastet en duplikatnøgle i HashMap, erstatter den den forrige værdi af den nøgle med den nye foreslåede værdi og returnerer den gamle værdi. Hvis der ikke bruges nogen duplikatnøgle og ingen udskiftning har fundet sted, returnerer nøglen altid Null. Lad os se, hvordan man tilføjer posterne til hashkortet 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.ln (hm); / * output * / {Vijay = 250, Jonny = 150, Ajay = 275, Jordan = 200} Som i ovenstående kode kan du se, jeg oprettede et objekt med HashMap og tilføjede posterne ved hjælp af put-metoden, og når jeg redigerede HashMap-objektet, redigeres posterne ikke i den rækkefølge, de blev indsat. Derfor kan du ikke foregive rækkefølgen af posterne i HashMap vil vende tilbage. HashMap bruger alle metoderne i Map interface og AbstractMap klasse og introducerer ingen nye metoder; det har sine egne konstruktører. Standardkapaciteten på hashkortet er 16 og standardfyldningsforhold er 0.75. LinkedHashMap er også en klassebrug til at oprette et kort. LinkedHashMap udvider HashMap klasse og blev senere introduceret til HashMap i JDK version 4.0. At være børneklasse i HashMap-klassen LinkedHashMap er nøjagtigt det samme som HashMap-klassen inklusive konstruktører og metoder. LinkedHashMap adskiller sig imidlertid i en forstand, at det opretholder rækkefølgen af indsættelsen af posterne på kortet. Den datastruktur, der bruges af LinkedHashMap til at gemme kortet, er linket liste og hash bord. Ud over de metoder, der er arvet af HashMap, introducerer LinkedHashMap en ny metode, der er fjernEldestEntry (). Denne metode bruges til at fjerne den ældste post på kortet. LinkedHashMap's standardkapacitet er 16, og standardfyldningsforholdet er 0,75, hvilket også ligner HashMap-klassen.
Definition af LinkedHashMap
- Den vigtigste forskel er, at indsættelsesrækkefølgen af HashMap er ikke konserveret der henviser til, at indsættelsesordren for LinkedHashMap er bevaret.
- Datastrukturen, som HashMap bruger til at gemme elementerne på kortet, er hashtabelsamling. På den anden side er den datastruktur, der bruges af LinkedHashMap Tilknyttet liste og hashtabelsamling.
- HashMap-klassen udvides AbstractMap klasse og implementerer Kort grænseflade. LinkedHashMap-klassen er dog en børneklasse af HashMap klasse, dvs. LinkedHashMap-klasse udvider HashMap-klassen.
- HashMap-klassen blev introduceret i JDK 2.0 version. LinkedHashMap-klassen blev introduceret senere i JDK 4.0 version.
- Forholdsmæssigt LinkedHashMap-klassen har mere overhead end HashMap, da den skal opretholde rækkefølgen af de elementer, der er indsat på kortet.
Konklusion:
LinkedHashMap må kun bruges, når vi er bekymrede over rækkefølgen af de elementer, der er indsat på kortet.