Junior — Middle
Wat gebeurt er binnenin een HashMap wanneer een nieuwe sleutel-waarde wordt toegevoegd?
sobes.tech AI
Antwoord van AI
Wanneer een nieuw sleutel-waarde paar wordt ingevoegd in een HashMap, gebeurt het volgende:
- De hash-code van de sleutel wordt berekend met behulp van de methode
hashCode(). - De hash-code wordt omgezet in een array-index (backend HashMap — array van buckets) door een operatie, bijvoorbeeld het nemen van de rest bij de grootte van de array of een bitmasker.
- Als er geen elementen in de bucket op die index zijn, wordt een nieuwe invoer met de sleutel en waarde gemaakt.
- Als de bucket al elementen bevat (botsing), wordt de keten doorlopen (gekoppelde lijst of boom, als er veel elementen zijn) om te controleren of de sleutel al bestaat:
- Als de sleutel wordt gevonden, wordt de waarde bijgewerkt.
- Als de sleutel niet bestaat, wordt een nieuwe invoer aan de keten toegevoegd.
- Wanneer een bepaalde vullingsdrempel (load factor) wordt bereikt, wordt de array uitgebreid en worden de elementen opnieuw verdeeld (rehash).
Voorbeeld:
Map<String, Integer> map = new HashMap<>();
map.put("apple", 5); // hash("apple") wordt berekend, de index wordt bepaald, invoer wordt toegevoegd