Junior — Middle
Wat gebeurt er als je twee sleutels met dezelfde hash-code maar verschillende equals-waarden in een HashMap plaatst?
sobes.tech AI
Antwoord van AI
In een HashMap in Java worden de sleutels opgeslagen in buckets geïndexeerd op basis van de hash-code. Als twee sleutels dezelfde hash-code hebben, vallen ze in dezelfde bucket, maar om de uniciteit te bepalen wordt de methode equals gebruikt.
Als je twee sleutels met dezelfde hash-code invoert, maar die niet gelijk zijn volgens equals, zal HashMap beide sleutels als verschillende records in dezelfde bucket bewaren.
Voorbeeld:
Map<Key, String> map = new HashMap<>();
Key key1 = new Key(1); // hashCode = 42
Key key2 = new Key(2); // hashCode = 42, maar !key1.equals(key2)
map.put(key1, "value1");
map.put(key2, "value2");
System.out.println(map.size()); // 2
Dus, dezelfde hash-code betekent niet dat de sleutels gelijk zijn. HashMap zoekt eerst in de bucket op basis van de hash, en vergelijkt daarna de sleutels via equals. Als equals false teruggeeft, wordt de sleutel als nieuw beschouwd en toegevoegd aan de collectie.