Sammenligningstabel
Grunnlag for sammenligning | HashMap | LinkedHashMap |
---|---|---|
grunn~~POS=TRUNC | Innføringsordre i HashMap er ikke bevart. | Innføringsordre er bevart i LinkedHashMap. |
Data struktur | HashMap bruker HashTable til å lagre kart. | LinkedHashMap bruker HashTable sammen med Linked List for å lagre kart. |
Utvider / Redskap | HashMap utvider AbstractMap og implementerer Kartgrensesnitt. | LinkedHashMap utvider Hashmap. |
Versjon | HashMap ble introdusert i JDK 2.0. | LinkedHashMap ble introdusert i JDK 4.0. |
overhead | Relativt 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
- Den viktigste forskjellen er at innføringsordren til HashMap ikke er bevart, mens innsettingsordren til LinkedHashMap er bevart .
- 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 .
- HashMap-klasse utvider AbstractMap- klassen og implementerer kartgrensesnittet. LinkedHashMap-klassen er imidlertid en klasseklasse av HashMap- klasse, dvs. LinkedHashMap-klassen utvider HashMap-klassen.
- HashMap-klassen ble introdusert i JDK 2.0- versjonen. LinkedHashMap-klassen ble introdusert senere i JDK 4.0- versjonen.
- 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.