Javaда equals() ыкмасы эмне кылат?
sobes.tech AI
AIден жооп
Javaда equals() ыкмасы эки объекттин бирдейлигин салыштыруу үчүн колдонулат. Дефолт мааниде, Object классынан мурас алган жана аны кайра аныктаган эмес объекттер үчүн, ал объекттердин шилтемелерин салыштырат (==), башкача айтканда, өзгөрмөлөрдүн бир эле эс тутум бөлүмүнө көрсөтүп жатканына көз чаптырат.
equals() ыкмасын туура кайра аныктоо объекттерди алардын мазмуну боюнча салыштыруу үчүн маанилүү, алардын эс тутумдагы жайгашуусуна эмес.
equals() ыкмасын кайра аныктаганда, төмөнкү эрежелерди сактоо керек:
- Рефлексивдүүлүк: ар бир нөлдөнбөгөн
xобъектисине карата,x.equals(x)trueболушу керек. - Симметриялыктык: эки нөлдөнбөгөн
xжанаyобъекттери үчүн, эгерx.equals(y)trueболсо, андаy.equals(x)даtrueболушу керек. - Транзитивдүүлүк: үч нөлдөнбөгөн объект
x,y, жанаzүчүн, эгерx.equals(y)жанаy.equals(z)экиси даtrueболсо, андаx.equals(z)даtrueболушу керек. - Туруктуулук: ар бир
xжанаyүчүн, көптөгөн чакырууларx.equals(y)бирдей натыйжа бериши керек, эгерде салыштыруу үчүн колдонулган маалыматтар өзгөрбөсө. - Nullга карата: ар бир
xнөл эмес объект үчүн,x.equals(null)falseболушу керек.
Көп учурда, equals() ыкмасын кайра аныктаганда, hashCode() ыкмасын да кайра аныктоо керек, шартты сактоо үчүн: эгер эки объект equals() боюнча бирдей болсо, алардын hashCode() ыкмасы да бирдей болушу керек. Эскерсе, бул милдеттүү эмес:
Коддун мисалы:
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) {
// Салыштыруу
if (this == o) return true;
// Null жана класс текшерүү
if (o == null || getClass() != o.getClass()) return false;
// Типти түргүзүү жана талаалар боюнча салыштыруу
MyObject myObject = (MyObject) o;
return value == myObject.value &&
Objects.equals(name, myObject.name);
}
@Override
public int hashCode() {
// Хеш-кодду талааларга негизделип түзүү
return Objects.hash(value, name);
}
// геттерлер, сеттерлер жана башка
}