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 кайтарса, ачкыч жаңы деп эсептелип, коллекцияга кошулат.