Ի՞նչ է անում equals() մեթոդը Java-ում։
sobes.tech AI
Պատասխան AI-ից
Java- ում equals() մեթոդը օգտագործվում է երկու օբյեկտների պարունակության համեմատության համար: Դեպքերում, երբ ոչինչ չի նշվում, Object դասում այն համեմատում է օբյեկտների հղումները, այսինքն՝ որոշում, արդյոք երկու փոփոխականներ ցույց են տալիս նույն հիշողության օբյեկտին:
Այնուամենայնիվ, Java- ի մեծամասնության դասերը (օրինակ՝ String, Integer) վերագրում են այս մեթոդը, որպեսզի համեմատեն օբյեկտներում պարունակվող արժեքները, այլ ոչ թե նրանց հղումները:
Երբ վերագրում եք equals()-ը, կարևոր է պահպանել նրա պայմանները:
- Ռեֆլեկտիվություն:
x.equals(x)պետք է լինիtrueցանկացած ոչ-զրոx-ի համար: - Սիմետրիկություն:
x.equals(y)պետք է լինիtrueմիայն այն դեպքում, երբy.equals(x)-ը նույնպեսtrueէ, ցանկացած ոչ-զրոxևyհամար: - Տրանզիտիվություն: Եթե
x.equals(y)ևy.equals(z)-ըtrueեն, ապաx.equals(z)-ը նույնպես պետք է լինիtrueցանկացած ոչ-զրոx,yևzհամար: - Կոնսիստենտություն: Կրկնվող
x.equals(y)կանչերը պետք է վերադարձնեն նույն արդյունքը, եթե օբյեկտները չեն փոխվել: - **Ոչ-զրո
x-ի համար,x.equals(null)-ը պետք է լինիfalse:
Նմուշ equals() վերագրումից:
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()-ի օգտագործում:
// Հղման համեմատություն (նույնը `Object`-ում)
Object obj1 = new Object();
Object obj2 = new Object();
boolean byReference = obj1.equals(obj2); // false
// արժեքի համեմատություն (վերագրած `equals`-ով)
MyObject myObj1 = new MyObject(10);
MyObject myObj2 = new MyObject(10);
boolean byValue = myObj1.equals(myObj2); // true
Կարևոր է նաև վերագրել hashCode() մեթոդը equals()-ի հետ, որպեսզի պահպանվի նրանց պայմանը և խուսափել խնդիրներից, որոնք առաջանում են հեշավորման (օրինակ՝ HashMap, HashSet) օգտագործման ժամանակ։