Sobes.tech
Junior — Middle

Java'da nesnelerin doğru karşılaştırılması için hangi durumlarda equals metodunu yeniden tanımlamalısınız?

sobes.tech yapay zeka

AI'dan gelen yanıt

Java'da equals yöntemi, sınıfınızdaki nesnelerin kendi kriterlerinize göre eşitliklerini belirlemek istediğinizde, varsayılan referans karşılaştırmasından (Object'te uygulanmış olan) farklı olarak yeniden tanımlanmalıdır.

Bu, özellikle sınıfınızdaki nesnelerin belirli alanlar eşleştiğinde mantıksal olarak eşit kabul edilmesi durumunda önemlidir; örneğin, Person sınıfında, nesneler isim ve doğum tarihi aynıysa eşit kabul edilir.

equals metodunun yeniden tanımlanması, şunlar için gereklidir:

  • Nesneleri içeriklerine göre doğru şekilde karşılaştırmak.
  • HashSet veya HashMap gibi koleksiyonların, öğelerin benzersizliğini belirlemek için equals kullanması nedeniyle doğru çalışmasını sağlamak.

equals metodunu yeniden tanımlarken, bu metodlar arasındaki sözleşmeyi korumak için hashCode metodunu da yeniden tanımlamak önemlidir.

equals ve hashCode metodlarının yeniden tanımlanmasına ö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(name, person.name) && Objects.equals(birthDate, person.birthDate);
}

@Override
public int hashCode() {
    return Objects.hash(name, birthDate);
}