Sobes.tech
Junior — Middle

HashMapке бирдей hash-кодго ээ, бирок equals боюнча ар башка маанилер менен эки ачкычты киргизсеңиз, эмне болот?

sobes.tech AI

AIден жооп

Javaда HashMapте ачкычтар хеш-кодго ылайык индекстелген бакеттерде сакталат. Эгер эки ачкыч бирдей хеш-кодго ээ болсо, алар бир бакетке түшөт, бирок уникалдуулугун аныктоо үчүн equals методу колдонулат.

Эгер бирдей хеш-кодго ээ, бирок equals боюнча тең эмес эки ачкыч кошсоңуз, HashMap эки ачкычты да бир бакетте ар башка жазуулар катары сактайт.

Мисал:

Map<Key, String> map = new HashMap<>();
Key key1 = new Key(1); // hashCode = 42
Key key2 = new Key(2); // hashCode = 42, бирок !key1.equals(key2)

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

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

Ошентип, бирдей хеш-код бирдей ачкычдар дегенди билдирбейт. HashMap биринчи кезекте хеш боюнча бакетти издейт, андан кийин equals аркылуу ачкычтарды салыштырат. Эгер equals false кайтарса, ачкыч жаңы деп эсептелип, коллекцияга кошулат.