Forskjellen mellom HashMap og LinkedHashMap i Java

Forfatter: Laura McKinney
Opprettelsesdato: 2 April 2021
Oppdater Dato: 10 Kan 2024
Anonim
Wolfenstein 3D sin rendermotor – Magnus Hovland Hoff – RevolverConf 2018.1
Video: Wolfenstein 3D sin rendermotor – Magnus Hovland Hoff – RevolverConf 2018.1

Innhold


HashMap og LinkedHashMap er klassene, som ligner hverandre og brukes til å lage et kart. HashMap-klassen utvider klassen AbstractMap til å bruke et hasjbord for å lagre elementene på kartet. LinkedHashMap-klassen opprettholder oppføringene på kartet basert på innsettingsrekkefølge. Funksjonen som skiller HashMap og LinkedHashMap fra hverandre er den HashMap opprettholder ikke rekkefølgen på de lagrede oppføringene på et kart. På den andre siden, LinkedHashMap bruker en hybrid datastruktur for å opprettholde rekkefølgen på oppføringene de ble satt inn i. I sammenligningstabellen nedenfor undersøkte jeg noen andre forskjeller mellom HashMap og LinkedHashMap bare se.

  1. Sammenligningstabell
  2. Definisjon
  3. Viktige forskjeller
  4. Konklusjon

Sammenligningstabell

Grunnlag for sammenligningHashMapLinkedHashMap
grunn~~POS=TRUNCInnleggingsrekkefølge i HashMap er ikke bevart.Innføringsrekkefølge er bevart i LinkedHashMap.
Data strukturHashMap bruker HashTable til å lagre kart.LinkedHashMap bruker HashTable sammen med Linked List til å lagre kart.
Utvider / RedskapHashMap utvider AbstractMap og implementerer kartgrensesnitt.LinkedHashMap utvider Hashmap.
VersjonHashMap ble introdusert i JDK 2.0.LinkedHashMap ble introdusert i JDK 4.0.
overheadForholdsvis mindre overhead.Relativt mer overhead fordi det må opprettholde rekkefølgen på kartoppføringene.


Definisjon av HashMap

HashMap er en klasse som brukes til å lage et kart. Den implementerer Kart Grensesnitt. Det utvider også AbstractMap klasse slik at den kan bruke en hasjtabell til å lagre oppføringene på kartet. Oppføringer på kartet er en par der hver tast er assosiert med verdien. Nøkkelen i oppføringen brukes til å hente verdien, derfor må nøkkelen være unik. Det er derfor duplikatnøkler ikke er tillatt i HashMap. Men nøkkelen i hver oppføring på kartet kan ha forskjellig type, dvs. nøklene på kartet opprettet av HashMap kan være heterogene. Datastrukturen som brukes av HashMap for å lagre et kart, er en hasjtabell.

Innføringsrekkefølgen for oppføringene i HashMap er ikke bevart. Innlegging av oppføringer på kartet opprettet ved hjelp av HashMap er basert på hasjkoden beregnet av tastene i oppføringene. Hvis du ved en feil skrev inn en duplikatnøkkel i HashMap, vil den erstatte den forrige verdien på den nøkkelen med den nye foreslåtte verdien og returnere den gamle verdien. Hvis ingen duplikatnøkkel brukes og ingen erstatning har funnet sted, returnerer nøkkelen alltid Null. La oss se hvordan du legger til oppføringene på hasjkartet med følgende eksempel.


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

Som i koden ovenfor, kan du se at jeg opprettet et objekt av HashMap og la til oppføringene ved hjelp av put-metoden, og når jeg redigerte HashMap-objektet, blir ikke oppføringene redigert i den rekkefølgen de ble satt inn. Derfor kan du ikke late som rekkefølgen på oppføringene i HashMap vil returnere. HashMap bruker alle metodene i Kartgrensesnitt og AbstractMap klasse og introduserer ingen ny metode; det har sine egne konstruktører. Standardkapasiteten til hasjkartet er 16 og standard fyllingsforhold er 0.75.

Definisjon av LinkedHashMap

LinkedHashMap er også en klassebruk for å lage et kart. LinkedHashMap utvider HashMap klasse og ble introdusert senere for HashMap i JDK versjon 4.0. Å være barneklasse for HashMap-klassen LinkedHashMap er nøyaktig det samme som HashMap-klassen, inkludert konstruktører og metoder. LinkedHashMap skiller seg imidlertid ut i en forstand at den opprettholder rekkefølgen for innsetting av oppføringene på kartet. Datastrukturen som blir brukt av LinkedHashMap for å lagre kartet er koblet liste og hasjbord.

I tillegg til metodene som er arvet av HashMap, introduserer LinkedHashMap en ny metode som er removeEldestEntry (). Denne metoden brukes til å fjerne den eldste oppføringen på kartet. Standardkapasiteten til LinkedHashMap er 16, og standard fyllingsforholdet er 0,75, som også ligner på HashMap-klassen.

  1. Den viktigste forskjellen er at innsettingsrekkefølgen til HashMap er ikke bevart mens ordren for innføring av LinkedHashMap er bevart.
  2. Datastrukturen som HashMap bruker for å lagre elementene på kartet er hashtabellen. På den annen side er datastrukturen som er brukt av LinkedHashMap Koblet liste og hashtabellen.
  3. HashMap-klassen strekker seg AbstractMap klasse og implementerer Kart grensesnitt. LinkedHashMap-klassen er imidlertid en barneklasse av HashMap klasse, dvs. LinkedHashMap-klassen utvider HashMap-klassen.
  4. HashMap-klassen ble introdusert i JDK 2.0 versjon. LinkedHashMap-klassen ble introdusert senere i JDK 4.0 versjon.
  5. Sammenlignbart LinkedHashMap-klassen har mer overhead enn HashMap da den har for å opprettholde rekkefølgen på elementene som er satt inn på kartet.

Konklusjon:

LinkedHashMap må bare brukes der vi er opptatt av sekvensen til elementene som er satt inn på kartet.