Sobes.tech
Junior — Middle

HashMap'e aynı hash koduna sahip ancak equals ile farklı değerlere sahip iki anahtar eklenirse ne olur?

sobes.tech yapay zeka

AI'dan gelen yanıt

Java'da HashMap'te anahtarlar, hash koduna göre indekslenen buckets'ta saklanır. İki anahtar aynı hash koduna sahıyorsa, aynı bucketa düşerler, ancak benzersizliği belirlemek için equals yöntemi kullanılır.

Aynı hash koduna sahip, ancak equals ile eşit olmayan iki anahtar eklenirse, HashMap her iki anahtarı da aynı bucketa farklı girişler olarak saklar.

Örnek:

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

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

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

Bu durumda, aynı hash kodu aynı anahtarlar anlamına gelmez. HashMap önce hash'e göre bucketi arar, sonra equals ile anahtarları karşılaştırır. Eğer equals false dönerse, anahtar yeni kabul edilir ve koleksiyona eklenir.