Sobes.tech
Junior

equals() metodi nima qiladi?

sobes.tech AI

AIdan javob

Java'da equals() metodi ikki ob'ektni tengligini solishtiradi.

Standart holda (Object sinfida), u ob'ektlarga referenslar bir xil yoki yo'qligini tekshiradi (ular bir xil xotira nusxasiga ishora qiladimi).

Sinflar bu metodni qayta yozishlari mumkin, ob'ektlarning mazmuniga asoslangan mantiqiy tengligini aniqlash uchun (masalan, ikki String ob'ekti, agar ular bir xil belgi ketma-ketligini o'z ichiga olsa, teng deb hisoblanadi, hatto ular turli nusxalar bo'lsa ham).

equals() metodini qayta yozishda, hashCode() metodini ham qayta yozish kerak, shunda quyidagi kelishuv saqlanadi: agar ikki ob'ekt equals() bo'yicha teng bo'lsa, ularning hashCode() metodlari ham bir xil qiymatlarni qaytarishi kerak.

Qayta yozish misoli:

class MyClass {
    private int value;

    public MyClass(int value) {
        this.value = value;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true; // Referenslarni solishtirish
        if (o == null || getClass() != o.getClass()) return false; // null va turlarni tekshirish
        MyClass myClass = (MyClass) o; // Tipni o'zgartirish
        return value == myClass.value; // Mantiqiy solishtirish
    }

    @Override
    public int hashCode() {
        return Objects.hash(value); // Hash kodini yaratish
    }
}