Junior — Middle
Java'da obyektlarni to'g'ri solishtirish uchun qachon equals metodini qayta yozish kerak?
sobes.tech AI
AIdan javob
Java'da equals metodi, sizning sinfingizdagi obyektlarning o'ziga xos tenglik mezonlarini belgilashni istaganingizda, standart referens bo'yicha taqqoslashdan (Object'da amalga oshirilgan) farq qiladigan tarzda qayta yozilishi kerak.
Bu ayniqsa muhim, agar sinfingizdagi obyektlar mantiqan teng deb hisoblanadigan bo'lsa, masalan, Person sinfida, obyektlar ism va tug'ilgan sana mos kelganda teng deb hisoblanadi.
equals metodini qayta yozish quyidagilar uchun zarur:
- Ob'ektlarni mazmuni bo'yicha to'g'ri taqqoslash.
- HashSet yoki HashMap kabi kolleksiyalar to'g'ri ishlashini ta'minlash, ular equals yordamida elementlarning yagona bo'lishini aniqlaydi.
equals metodini qayta yozishda, bu metodlar orasidagi shartnoma bajarilishini ta'minlash uchun hashCode metodini ham qayta yozish muhim.
equals va hashCode metodlarini qayta yozish misoli:
@Override
public boolean equals(Object obj) {
if (this == obj) return true;
if (obj == null || getClass() != obj.getClass()) return false;
Person person = (Person) obj;
return Objects.equals(name, person.name) && Objects.equals(birthDate, person.birthDate);
}
@Override
public int hashCode() {
return Objects.hash(name, birthDate);
}