Java-da equals() metodu nə edir?
sobes.tech Süni İntellekt
AI-dan cavab
Java-da equals() metodu iki obyekti bərabərliyini müqayisə etmək üçün istifadə olunur. Əsasən, Object-dən miras alan və onu yenidən yazmayan obyektlər üçün, o, obyektlərin istinadlarını (==) müqayisə edir, yəni dəyişənlərin eyni yaddaş sahəsinə işarə edib-etmədiyini yoxlayır.
equals() metodunun düzgün şəkildə yenidən yazılması, obyektləri onların məzmununa görə müqayisə etmək üçün vacibdir, yaddaş yerlərinə görə yox.
equals() metodunu yenidən yazarkən aşağıdakı qaydalara əməl etmək lazımdır:
- İntizamlılıq: hər hansı null olmayan
xobyekti üçün,x.equals(x)trueqaytarmalıdır. - Simmetriya: hər hansı null olmayan
xvəyobyektləri üçün, əgərx.equals(y)trueqaytarırsa, onday.equals(x)dətrueolmalıdır. - Transitivlik: hər hansı null olmayan
x,yvəzobyektləri üçün, əgərx.equals(y)vəy.equals(z)truedirsə, ondax.equals(z)dətrueolmalıdır. - Əlaqəlilik: hər hansı null olmayan
xvəyüçün, çoxsaylıx.equals(y)çağırışları ardıcıl olaraq eyni nəticəni verməlidir, şərti olaraq, müqayisədə istifadə olunan məlumatlar dəyişməyibsə. - Hər hansı null olmayan
xüçün,x.equals(null)falseqaytarmalıdır.
Əksər hallarda, equals() metodunu yenidən yazarkən, hashCode() metodunu da yenidən yazmaq lazımdır, və bu, kontraktı təmin edir: əgər iki obyekt equals()-ə görə bərabərdirsə, onların hashCode()-u da eyni olmalıdır. Əksinə, eyni hashCode()-a sahib obyektlər mütləq bərabər olmalıdır deyildir.
Nümunə:
public class MyObject {
private int value;
private String name;
public MyObject(int value, String name) {
this.value = value;
this.name = name;
}
@Override
public boolean equals(Object o) {
// Öz müqayisəsi
if (this == o) return true;
// null və sinif yoxlaması
if (o == null || getClass() != o.getClass()) return false;
// Tipə çevirmə və sahələr üzrə müqayisə
MyObject myObject = (MyObject) o;
return value == myObject.value &&
Objects.equals(name, myObject.name);
}
@Override
public int hashCode() {
// Hash kodunun yaradılması sahələrə əsasən
return Objects.hash(value, name);
}
// getterlər, setterlər və s.
}