Junior — Middle
Чаро тавсия дода мешавад, ки усулҳои equals() ва hashCode() дар вақти муайян кардани синф ба ҳам иҷро шаванд?
sobes.tech AI
Ҷавоб аз AI
Методҳои equals() ва hashCode() ба ҳам алоқаманданд ва бояд дар якҷоягӣ татбиқ карда шаванд, то рафтори дурустии объектҳоро дар коллексияҳо, монанди HashMap, HashSet ва дигарон, ки асоси хешинг доранд, таъмин кунанд.
Агар ду объект тавассути equals() баробар ҳисобида шаванд, арзиши hashCode()и онҳо бояд якхела бошад. Дар акси ҳол, коллекияҳо метавонанд нодуруст кор кунанд: масалан, объект дар таблицаи хеш пайдо нагардад, ҳатто агар он дар он ҷо бошад.
Масалан:
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
MyClass myClass = (MyClass) o;
return id == myClass.id;
}
@Override
public int hashCode() {
return Objects.hash(id);
}
Ин татбиқи муштарак кафолат медиҳад, ки объектҳо дар коллекияҳо дарозмуддат ва дуруст кор мекунанд.