Sobes.tech
Junior — Middle

Ce se întâmplă dacă introduci în HashMap două chei cu același cod hash, dar valori diferite conform metodei equals?

sobes.tech AI

Răspuns de la AI

În HashMap în Java, cheile sunt stocate în buckete indexate după codul hash. Dacă două chei au același cod hash, acestea cad în același bucket, dar pentru a determina unicitatea se folosește metoda equals.

Dacă inserezi două chei cu același cod hash, dar care nu sunt egale conform equals, HashMap va păstra ambele chei ca înregistrări diferite în același bucket.

Exemplu:

Map<Key, String> map = new HashMap<>();
Key key1 = new Key(1); // hashCode = 42
Key key2 = new Key(2); // hashCode = 42, dar !key1.equals(key2)

map.put(key1, "value1");
map.put(key2, "value2");

System.out.println(map.size()); // 2

Prin urmare, același cod hash nu înseamnă chei identice. HashMap caută mai întâi în bucket după hash, apoi compară cheile prin equals. Dacă equals returnează false, cheia este considerată nouă și adăugată în colecție.