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()falsegaý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.