Sobes.tech
Junior — Middle

Сиз hashCode ыкмамасынын максатын жана Javaда контракттарды колдонууда анын ролун түшүндүрө аласызбы?

sobes.tech AI

AIден жооп

Java-da hashCode() metodu obyektnin hash qiymatini bildirýän bütünji san görnüşinde yzyna gaýtarýar. Ol HashMap, HashSet ýaly hash esasly ýygnaklarda ulanylýar.

hashCode()-uň equals() bilen şertnamadaky roly:

  • Eger iki obýekt equals() usulyna görä deň bolsa, olaryň hashCode()-lary hem birmeňzeş bolmaly.
  • Eger equals() false gaýtarýan bolsa, hashCode() dürli bahalar gaýtarip biler, ýöne bu zerur däl.

Bu hash gurluşlarynyň dogry işlemegi üçin möhümdir: ilkinji nobatda hash hasaplanýar, bu ýerde kassa kesgitlenýär, soňra equals() çagyrylýar takyk deňeşdirmek üçin.

Üstünlik bilen ýazmak mysaly:

@Override
public boolean equals(Object o) {
    if (this == o) return true;
    if (o == null || getClass() != o.getClass()) return false;
    MyClass myClass = (MyClass) o;
    return field.equals(myClass.field);
}

@Override
public int hashCode() {
    return field.hashCode();
}

Bu şertnamanyň bozulmagy ýygnaklaryň nädogry işlemegine we kyn tapylýan säwliklere getirip biler.