Java'da equals() metodi nima qiladi?
sobes.tech AI
AIdan javob
Java'da equals() metodi ikki ob'ektning mazmunini taqqoslash uchun ishlatiladi. Standart holda, Object sinfida, u ob'ektlarning havolalarini taqqoslaydi, ya'ni, ikki o'zgaruvchi bir xil xotira ob'ektiga ishora qilayotganligini aniqlaydi.
Biroq, Java'dagi ko'pgina sinflar (masalan, String, Integer) bu metodni qayta belgilaydi, ob'ektlardagi qiymatlarni taqqoslash uchun, havolalar emas.
equals() metodini qayta belgilashda, uning shartnomasiga rioya qilish muhim:
- Refleksivlik:
x.equals(x)har qanday null bo'lmaganxuchuntruebo'lishi kerak. - Simmetriya:
x.equals(y)faqat va faqaty.equals(x)truebo'lsa,truebo'lishi kerak, har qanday null bo'lmaganxvayuchun. - Transitivlik: Agar
x.equals(y)vay.equals(z)truebo'lsa,x.equals(z)hamtruebo'lishi kerak, har qanday null bo'lmaganx,y,zuchun. - Konsistensiya: Bir nechta
x.equals(y)chaqiruvlari, ob'ektlar o'zgarmagan bo'lsa, bir xil natijani qaytarishi kerak. - Har qanday null bo'lmagan
xuchun,x.equals(null)falsebo'lishi kerak.
equals() metodini qayta belgilash misoli:
class MyObject {
private int value;
public MyObject(int value) {
this.value = value;
}
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj == null || getClass() != obj.getClass()) {
return false;
}
MyObject myObject = (MyObject) obj;
return value == myObject.value;
}
}
equals()dan foydalanish:
// Havola bo'yicha taqqoslash (standart Object da)
Object obj1 = new Object();
Object obj2 = new Object();
boolean havolaBilanTaqqoslash = obj1.equals(obj2); // false
// Qiymat bo'yicha taqqoslash (`equals` qayta belgilanganidan so'ng)
MyObject myObj1 = new MyObject(10);
MyObject myObj2 = new MyObject(10);
boolean qiymatBilanTaqqoslash = myObj1.equals(myObj2); // true
equals()ni qayta belgilash bilan birga, hashCode() metodini ham qayta belgilash muhim, chunki ularning shartnomasini saqlash va HashMap, HashSet kabi hash asosidagi kolleksiyalar bilan muammolarni oldini olish uchun zarur.