Javaда equals() жана hashCode() методдору арасындагы айырмачылыктарды түшүндүрүп бериңиз жана алар эмне үчүн бирге керек экенин айтыңыз.
sobes.tech AI
AIден жооп
Javaда equals() жана hashCode() ыкмалары объекттерди салыштырууга жана алардын топтомдордо колдонулушуна байланыштуу.
-
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() ошол эле талааларга негизделген хешти кайтарат, бул туруктуулукту камсыздайт.