Anbefalt, 2024

Redaksjonens

Forskjellen mellom HashMap og LinkedHashMap i Java

HashMap og LinkedHashMap er klassene, som ligner på hverandre og brukes til å lage et kart. HashMap-klassen utvider klassen AbstractMap for å bruke et hashbord for å lagre elementene i kartet. LinkedHashMap-klassen opprettholder oppføringene i kartet basert på deres innføringsordre. Funksjonen som skiller HashMap og LinkedHashMap fra hverandre er at Hashmap ikke opprettholder rekkefølgen til de lagrede oppføringene i et kart. På den annen side bruker LinkedHashMap en hybrid datastruktur for å opprettholde rekkefølgen av oppføringer som de ble satt inn i. I Sammenligningstabellen nedenfor har jeg utforsket noen andre forskjeller mellom HashMap og LinkedHashMap bare ta en titt.

Sammenligningstabel

Grunnlag for sammenligningHashMapLinkedHashMap
grunn~~POS=TRUNCInnføringsordre i HashMap er ikke bevart.Innføringsordre er bevart i LinkedHashMap.
Data strukturHashMap bruker HashTable til å lagre kart.LinkedHashMap bruker HashTable sammen med Linked List for å 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.
overheadRelativt mindre overhead.Forholdsvis mer overhead fordi det må opprettholde rekkefølgen på kartoppføringene.

Definisjon av HashMap

HashMap er en klasse som brukes til å lage et kart. Det implementerer Map Interface. Den utvider også kategorien AbstractMap, slik at den kan bruke et hashbord til å lagre oppføringene i kartet. Oppføringer av kartet er et par hvor hver nøkkel er knyttet til verdien. Nøkkelen i oppføringen brukes til å hente verdien, derfor må nøkkelen være unik. Derfor er dupliserte nøkler ikke tillatt i HashMap. Men nøkkelen i hver oppføring på kartet kan ha forskjellig type, dvs. at nøklene i kartet som er opprettet av HashMap, kan være heterogene. Datastrukturen som brukes av HashMap til å lagre et kart, er et hashbord.

Innføringsordren til oppføringene i HashMap er ikke bevart. Innsetting av oppføringer i kartet som er opprettet ved hjelp av HashMap, er basert på hash-koden beregnet av tastene i oppføringene. Hvis du ved en feil har skrevet inn en duplikatnøkkel i HashMap, erstatter den forrige verdien av den aktuelle nøkkelen med den nye verdien som er foreslått, og returnerer 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å hash-kartet 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); / * utgang * / {Vijay = 250, Jonny = 150, Ajay = 275, Jordan = 200} 

Som i koden ovenfor kan du se at jeg har opprettet et objekt med HashMap og lagt til oppføringene ved hjelp av puts-metoden, og når jeg skrev ut HashMap-objektet, skrives ikke oppføringene i den rekkefølgen de ble satt inn. Derfor kan du ikke late som ordren til oppføringene i HashMap kommer tilbake. HashMap bruker alle metodene for Map grensesnitt og AbstractMap klasse og introduserer ingen ny metode; den har sine egne konstruktører. Standardkapasiteten til hashkartet er 16 og standardfyllingsforholdet er 0.75 .

Definisjon av LinkedHashMap

LinkedHashMap er også en klassebruk for å lage et kart. LinkedHashMap utvider HashMap- klassen og ble introdusert senere til HashMap i JDK versjon 4.0. Å være barneklassen i HashMap-klasse LinkedHashMap er akkurat det samme som HashMap-klassen, inkludert konstruktørene og metodene. Men, LinkedHashMap er forskjellig på en måte at den opprettholder rekkefølgen på innsetting av oppføringene i kartet. Datastrukturen som brukes av LinkedHashMap til å lagre kartet, er knyttet til liste og hashbord .

I tillegg til metodene arvet av HashMap, lanserer LinkedHashMap en ny metode som er removeEldestEntry () . Denne metoden brukes til å fjerne den eldste oppføringen i kartet. Standardkapasiteten til LinkedHashMap er 16, og standardfyllingsforholdet er 0.75 som også ligner HashMap-klassen.

Viktige forskjeller mellom HashMap og LinkedHashMap i Java

  1. Den viktigste forskjellen er at innføringsordren til HashMap ikke er bevart, mens innsettingsordren til LinkedHashMap er bevart .
  2. Datastrukturen som brukes av HashMap for å lagre elementene i kartet, er Hashtable . På den annen side er datastrukturen som brukes av LinkedHashMap, koblet til listen og Hashtable .
  3. HashMap-klasse utvider AbstractMap- klassen og implementerer kartgrensesnittet. LinkedHashMap-klassen er imidlertid en klasseklasse av HashMap- klasse, dvs. LinkedHashMap-klassen utvider HashMap-klassen.
  4. HashMap-klassen ble introdusert i JDK 2.0- versjonen. LinkedHashMap-klassen ble introdusert senere i JDK 4.0- versjonen.
  5. Sammenlignet LinkedHashMap-klasse har mer overhead enn HashMap som det må opprettholde rekkefølgen av elementene som er satt inn i kartet.

Konklusjon:

LinkedHashMap må kun brukes der vi er bekymret for sekvensen av elementene som er lagt inn i kartet.

Top