Sobes.tech
Junior — Middle

Čo sa stane, ak do HashMap vložíte dva kľúče so rovnakým hash kódom, ale odlišnými hodnotami podľa equals?

sobes.tech AI

Odpoveď od AI

V HashMap v Jave so ključi shranjeni v koših, indeksiranih po hash kodi. Če imata dva ključa enako hash kodo, padejo v isti koš, vendar za določitev unikatnosti se uporablja metoda equals.

Če vstavite dva ključa z enako hash kodo, vendar ki nista enaka po equals, bo HashMap shranila oba ključa kot različne vnose v isti koš.

Primer:

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

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

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

Torej, enak hash koda ne pomeni enakih ključev. HashMap najprej išče v košu po hash-u, nato pa primerja ključe preko equals. Če equals vrne false, se ključ šteje za nov in se doda v zbirko.