Sobes.tech
Junior — Middle

Java'da equals ve hashCode metodları arasındaki temel prensipler nelerdir?

sobes.tech yapay zeka

AI'dan gelen yanıt

Java'da equals ve hashCode arasındaki temel ilkeler:

  • Eğer iki nesne equals'e göre eşitse, hashCode'ları aynı olmalıdır.
  • Eğer iki nesnenin hashCode'ları farklıysa, equals mutlaka false döndürmelidir.
  • Eğer equals false dönerse, hashCode aynı olabilir, ancak bu istenmez çünkü hash yapısının performansını olumsuz etkiler.

Bu, hash kullanarak koleksiyonların (HashMap, HashSet) doğru çalışmasını sağlar; burada hashCode, sepeti belirler ve equals, nesnelerin kesin karşılaştırmasını yapar.

Örnek:

@Override
public boolean equals(Object obj) {
    if (this == obj) return true;
    if (obj == null || getClass() != obj.getClass()) return false;
    Person person = (Person) obj;
    return Objects.equals(id, person.id);
}

@Override
public int hashCode() {
    return Objects.hash(id);
}

Burada, equals ve hashCode aynı alan olan id'ye dayanır, bu da tutarlılıklarını sağlar.