Forskellen mellem HashMap og LinkedHashMap i Java

Forfatter: Laura McKinney
Oprettelsesdato: 2 April 2021
Opdateringsdato: 9 Kan 2024
Anonim
Forskellen mellem HashMap og LinkedHashMap i Java - Teknologi
Forskellen mellem HashMap og LinkedHashMap i Java - Teknologi

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.

  1. Sammenligningstabel
  2. Definition
  3. Vigtige forskelle
  4. Konklusion

Sammenligningstabel

Grundlag for sammenligningHashMapLinkedHashMap
GrundlæggendeIndsættelsesrækkefølge i HashMap bevares ikke.Indsætningsordre bevares i LinkedHashMap.
DatastrukturHashMap bruger HashTable til at gemme kort.LinkedHashMap bruger HashTable sammen med Linked List til at gemme kort.
Udvider / GennemførerHashMap udvider AbstractMap og implementerer Map-interface.LinkedHashMap udvider Hashmap.
VersionHashMap blev introduceret i JDK 2.0.LinkedHashMap blev introduceret i JDK 4.0.
OverheadForholdsvis 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 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 forskellige typer, dvs. nøglerne på kortet oprettet af HashMap kan være heterogene. Den datastruktur, som HashMap bruger til at gemme et kort, er en hash-tabel.

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.

Definition af LinkedHashMap

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.

  1. Den vigtigste forskel er, at indsættelsesrækkefølgen af ​​HashMap er ikke konserveret der henviser til, at indsættelsesordren for LinkedHashMap er bevaret.
  2. 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.
  3. 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.
  4. HashMap-klassen blev introduceret i JDK 2.0 version. LinkedHashMap-klassen blev introduceret senere i JDK 4.0 version.
  5. 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.