Junior — Middle
Javaда equals жана hashCode методдору кандай байланышта экендигин жана алардын туура ишке ашырылышы коллекциялардын иштеши үчүн эмне үчүн маанилүү экендигин түшүндүрүңүз.
sobes.tech AI
AIден жооп
Javaда equals жана hashCode ыкмалары тыгыз байланышта болуп, объектилерди салыштыруу жана алардын коллекцияларында сактоо үчүн колдонулат, мисалы HashMap, HashSet.
Эрежелер:
- Эгер эки объект
equalsыкмасы боюнча бирдей болсо (демек,a.equals(b) == true), анда алардынhashCodeбирдей болушу керек. - Эгер объектилердин
hashCodeайырмаланса,equalsалардын үчүнfalseкайтаруусу керек.
Эмне үчүн бул маанилүү:
Hash негизделген коллекциялар биринчи hashCode аркылуу тез табуу үчүн колдонулат, андан кийин equals аркылуу так салыштыруу жүргүзүлөт. Эгер бул ыкмалар туура эмес иштелип чыкса, объектилер коллекцияда табылбай калышы мүмкүн, логикалык жактан бирдей болсо да.
Туура иштеп чыгуу мисалы:
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
MyClass myClass = (MyClass) o;
return field1.equals(myClass.field1) && field2 == myClass.field2;
}
@Override
public int hashCode() {
return Objects.hash(field1, field2);
}
Бул ыкма equals жана hashCode туура иштелип чыкканда, коллекциялардын туура иштешин камсыз кылат жана издөө, кошуу жана өчүрүүдө ката кетирбейт.