Тафовутҳоро байни усулҳои equals() ва hashCode() дар Java шарҳ диҳед ва чаро онҳо дар якҷоягӣ заруранд.
sobes.tech AI
Ҷавоб аз AI
Методҳои equals() ва hashCode() дар Java бо муқоиса кардани объектҳо ва истифодаи онҳо дар коллексияҳо алоқаманданд.
-
equals()муайян мекунад, ки оё ду объект дар маънои (лоғикӣ) баробар ҳастанд. Ба таври пешфарз, дар синфиObject, он ба истинодҳо муқоиса мекунад (яъне, оё онҳо объектҳои ҳамон дар хотира ҳастанд), аммо одатан барои муқоиса кардани мазмунҳо иваз карда мешавад. -
hashCode()арзиши ададии — коди хеши объектро бармегардонад. Масалан, дар ҷадвалҳои хеш (HashMap,HashSet) барои ҷустуҷӯи зуд истифода мешавад.
Муҳим аст, ки агар ду объект аз рӯи equals() баробар ҳисобида шаванд, бояд ҳамон hashCode() дошта бошанд. Ин қоида кори дурустии коллексияҳои асосёфта ба хешро таъмин мекунад.
Масалан:
class Person {
String name;
int age;
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof Person)) return false;
Person p = (Person) o;
return age == p.age && name.equals(p.name);
}
@Override
public int hashCode() {
return Objects.hash(name, age);
}
}
Ин ҷо, equals() майдонҳоро муқоиса мекунад, ва hashCode() хешро бар асоси ҳамин майдонҳо бармегардонад, ки мутобиқатро таъмин мекунад.