Middle
Equals ve hashCode metodları için hangi kurallar vardır?
sobes.tech yapay zeka
AI'dan gelen yanıt
equals(Object)yöntemiyle iki nesne eşitse, onların karma kodları (hashCode()yöntemiyle döndürülür) aynı olmalıdır.equals(Object)yöntemiyle iki nesne eşit değilse, onların karma kodları aynı veya farklı olabilir. Eşit olmayan nesneler için farklı karma kodları sağlamak, hash tabanlı koleksiyonların performansını artırmak için iyi bir uygulamadır.hashCode()yöntemi, aynı nesne için birden çok çağrıda aynı değerleri döndürmelidir, eğer karma kodunu hesaplamak için kullanılan bilgiler değişmediyse.- Simetri: herhangi bir
avebnesnesi için, eğera.equals(b)trueise,b.equals(a)detrueolmalıdır. - Yansıtıcılık: herhangi bir null olmayan
anesnesi için,a.equals(a)trueolmalıdır. - Transitiflik: herhangi
a,bvecnesneleri için, eğera.equals(b)trueveb.equals(c)trueise,a.equals(c)detrueolmalıdır. - Tutarlılık: herhangi null olmayan
avebnesneleri için,a.equals(b)çoklu çağrıları tutarlı bir şekildetrueveyafalsedöndürmelidir,equals(Object)karşılaştırmasında kullanılan bilgiler değişmediyse.
Uygulama örneği:
public class MyClass {
private int value;
private String name;
public MyClass(int value, String name) {
this.value = value;
this.name = name;
}
@Override
public boolean equals(Object o) {
// Nesne kimliğinin kontrolü
if (this == o) {
return true;
}
// Nesne tipinin kontrolü
if (o == null || getClass() != o.getClass()) {
return false;
}
// Tip dönüşümü
MyClass myClass = (MyClass) o;
// Alanlar üzerinden karşılaştırma
return value == myClass.value &&
Objects.equals(name, myClass.name); // null kontrolü için Objects.equals kullanılır
}
@Override
public int hashCode() {
// Hash kodu oluşturmak için Objects.hash kullanılır
return Objects.hash(value, name);
}
// Diğer metodlar...
}