Sobes.tech
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:

  1. De hash-code van de sleutel wordt berekend met behulp van de methode hashCode().
  2. 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.
  3. Als er geen elementen in de bucket op die index zijn, wordt een nieuwe invoer met de sleutel en waarde gemaakt.
  4. 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.
  5. 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