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.