Middle
Equals ve hashCode metodları yeniden tanımlanmadıysa, HasMap.get() yöntemi ne döndürür?
sobes.tech yapay zeka
AI'dan gelen yanıt
Arama işlemi için kullanılan anahtar, ekleme sırasında kullanılan nesneyle aynı nesne (aynı referansa sahip) değilse, null döner.
Bunun nedeni, HashMap'in anahtarların "eşitliğini" belirlemek için hashCode() ve equals() kombinasyonunu kullanmasıdır. Bu metodlar override edilmemişse, Object'in varsayılan metodları kullanılır.
Object.hashCode()genellikle nesnenin bellek adresine dayalı bir değer döndürür, yani her örnek için benzersizdir.Object.equals()sadece referans eşitliğini kontrol eder (this == obj).
Bu nedenle, HashMap.get()'in override edilmemiş equals ve hashCode() kullanarak bir öğe bulabilmesi için, her iki koşulun da sağlanması gerekir:
- Hash kodları (
Object.hashCode()) eşit olmalı, ki bu farklı nesneler için çok düşük bir olasılıktır. - Nesneler referans olarak eşit olmalı (
Object.equals()), yani aynı nesne örneği olmalı.
Bir nesneyi HashMap'e yerleştirip, sonra aynı alan değerlerine sahip (ama farklı nesne örneği olan) başka bir nesne kullanarak erişmeye çalışırsanız, varsayılan hashCode ve equals onları farklı kabul eder ve get() null döner.