HashMap og LinkedHashMap er to av de mest vanlige og generelle kart implementeringene i Java-plattformen. De er i utgangspunktet hash-baserte klasser, ganske like hverandre, og brukes til å lage et kart. Kartgrensesnittet er det siste av de store grensesnittene for Samlingsgrensesnitt som definerer operasjonene som støttes av et sett av nøkkelverdige foreninger der nøklene er unike. Disse kartimplementasjonene er basert på en hashingalgoritme. Mens klassen HashMap implementerer uordnede kart, implementerer Class LinkedHashMap bestilte kart. Implementert LinkedHashMap er en underklasse av HashMap-klassen, som betyr at den arver funksjonene i klassen HashMap. Det er ikke mye forskjell mellom de to med hensyn til ytelse. La oss ta en titt.
HashMap er en av de vanligste og blant de fire generelle formålene med kartgrensesnittet i Java basert på en hashingalgoritme. Den er analog med den angitte klassen HashSet, selv om elementene er uordnede i begge klassene. Den implementeres som et hashbord, men i motsetning til LinkedHashMap, opprettholdes det ikke noen ordre på nøkler eller verdier. Generelt gir HashMap konstant tidsproduksjon for put og get. Klassen er ikke trådsikker, men den tillater én null-nøkkel og flere null-verdier. Da det ikke opprettholder en iterating rekkefølge, krever det mindre minne.
LinkedHashMap er blant de fire generelle formålene med kartgrensesnittet som er en underklasse av HashMap-klassen, som betyr at den arver sine funksjoner. Selv om det er veldig lik HashMap når det gjelder ytelse, bortsett fra det opprettholder innsetting rekkefølge av nøkler, enten i rekkefølge som nøklene er satt inn i kartet eller rekkefølgen der oppføringene er tilgjengelige i kartet. Det avgrenser kontrakten i sin overordnede klasse ved å garantere rekkefølgen der iteratorer returnerer sine elementer. Det krever imidlertid mer minne enn en HashMap fordi den opprettholder en dobbeltkoblet liste i Java.
HashMap er en hash-basert implementering av Map-grensesnittet i Java. Kart er en samling av nøkkelverdier og brukes når Lister er i bestilt samling. HashMap er en samlingsklasse som lagrer verdi i nøkkelverdier. Enkelt sagt kartlegger det nøkler til verdier som betyr at det kan finne en verdi basert på en nøkkel. LinkedHashMap er en koblet listeimplementering av kartgrensesnittet, akkurat som HashMap, bortsett fra at det opprettholder ordreelementer som er lagt inn i det. Det er en underklasse av HashMap som arver sine funksjoner. LinkedHashMap forfiner kontrakten for sin overordnede klasse, HashMap, ved å garantere rekkefølgen der iteratorene returnerer sine elementer.
Hovedforskjellen mellom HashMap og LinkedHashMap er ordre. Elementer av en HashMap er ikke i orden, helt tilfeldig, mens elementer av LinkedHashMap er bestilt. Oppføringene til en LinkedHashMap er i nøkkelinnleggingsordre, som er rekkefølgen der nøklene er satt inn i kartet. Dette betyr at den første nøkkelen som er satt inn i kartet, blir opplistet først, slik at verdien som er knyttet til den, og den siste oppføringen er satt inn sist oppført. LinkedHashMap har en forutsigbar iterasjonsordre som betyr at den også kan opprettholde elementene i tilgangsordren, hvilken rekkefølge er oppføringene tilgjengelige for.
Både HashMap og LinkedHashMap-klassene bruker hashing til å implementere Map-grensesnittet i Java, bortsett fra at HashMap er implementert som et hashbord mens LinkedHashMap opprettholder en dobbeltkoblet liste over Skuffer som går gjennom alle oppføringene. Derfor krever LinkedHashMap mer minne enn HashMap fordi det, i motsetning til HashMap, opprettholder en ordre. Den fjerner den kaotiske bestillingen av HashMap, uten å pådra seg ekstrakostnaden som ville ha blitt påført ellers med TreeMap. I tillegg er LinkedHashMap-klassen svært lik HashMap-klassen i mange aspekter, for eksempel synkronisering og nullnøkler / verdier, da begge tillater en null-nøkkel og flere null-verdier.
Selv om begge klassene gir sammenlignbar ytelse, er HashMap-klassen antatt å være det foretrukne valget hvis bestilling ikke er et problem fordi det ikke garanterer om den iterererende rekkefølgen til kartet. Operasjoner som å legge til, fjerne eller finne oppføringer basert på en nøkkel, er konstant, da de har nøkkelen. Så å legge til, fjerne og finne oppføringer i en LinkedHashMap kan være litt tregere enn i en HashMap fordi den opprettholder en dobbeltkoblet liste over Skuffer i Java. I tillegg krever HashMap mindre minne enn LinkedHashMap fordi ingen ordre opprettholdes.
Mens både HashMap og HashMap-klassene er nesten like i ytelse, krever HashMap mindre minne enn en LinkedHashMap fordi den ikke garanterer det iterererende rekkefølgen på kartet, noe som gjør det mulig å legge til, fjerne og finne oppføringer i en HashMap relativt raskere enn å gjøre det samme med en LinkedHashMap. Nøkkelforskjellen mellom de to er imidlertid rekkefølge: elementene i en HashMap er ikke i orden, mens elementene i en LinkedHashMap er i nøkkelinnleggingsordre som standard betyr rekkefølgen der nøklene settes inn i kartet. LinkedHashMap kan også opprettholde sine elementer i tilgangsordre, som betyr rekkefølgen der oppføringene er tilgjengelige. Som med LinkedHashMap må en dobbeltkoblet liste opprettholdes, den har mindre ytelse enn HashMap.