Gå til innhold

Opprettet HashMap blir unormalt stort


Anbefalte innlegg

Jeg har opprettet en HashMap<String, String>() som inneholder verdier hentet fra database. Når jeg ser på denne HashMap er det mange tomme innslag i tabellen. De som er tom er satt som null. Mellom hvert key-value par kan det være flere nullforekomster.

 

Hvorfor oppretter HashMap så mange tomme "null"forekomster? Hvordan kan jeg blir kvitt disse for å få optimalisert HashMapobjektet mitt for søking?

Lenke til kommentar
Videoannonse
Annonse
Jeg har opprettet en HashMap<String, String>() som inneholder verdier hentet fra database. Når jeg ser på denne HashMap er det mange tomme innslag i tabellen. De som er tom er satt som null. Mellom hvert key-value par kan det være flere nullforekomster.

 

Hvorfor oppretter HashMap så mange tomme "null"forekomster? Hvordan kan jeg blir kvitt disse for å få optimalisert HashMapobjektet mitt for søking?

8007912[/snapback]

 

Med fare for at jeg er fullstendig glemsk så skal det være hull i en hashmap. Indeksen i en hashmap er hashing av key og plasseringen bestemmes på bakgrunn av verdien av denne hashingen. Hvis hashmapen er for liten får man kollisjoner og da må elementer flyttes til en annen indeks enn opprinnelig tiltenkt. Når en skal søke i en hashmap og elementene ikke ligger der hashen skulle tilsi tar det også mye lenger tid.

 

At en hashmap har mange tomme elementer gjør ingenting. Etterhvert som du fyller på blir det mindre plass og når hashmapen har nådd lastefaktor (enten default eller en du har satt selv) blir den utvidet og alle elementer plasseres på nytt ved hjelp av rehash.

Lenke til kommentar

LESTE FOREGÅENDE POST EN GANG TIL OG HELT RIKTIG var det. :blush:

 

Om hash funksjonen blir den samme som et tidligere element er java implenetasjonen slik at du den legger elementene i en liste i denne posisjonen. Størrelsen på hashmap blir initielt bestemt av load faktoren

 

 

Rehashing skjer hvis det blir flere hash kollisjoner enn det er "buckets" i en nøkkel element mapping.. (da utvides hashmappet)..

 

hmmm.. dette var jeg ikke god til å forklare sjekk:

 

Hashmap JavaDoc

Endret av thpost
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...