Sobes.tech
Junior — Middle

Javaда объекттерди туура салыштыруу үчүн кайсы учурларда equals ыкмасын кайра аныктоо керек?

sobes.tech AI

AIден жооп

Javaда equals методу, өзүңүздүн классыңыздын объекттеринин өзгөчө барабарлык критерийлерин аныктоо үчүн, стандарттык шилтемеге негизделген салыштырылуудан (Objectте ишке ашырылган) башкача, кайра жазуу керек.

Бул өзгөчө маанилүү, эгер сиздин классыңыздын объекттери логикалык жактан барабар деп эсептелсе, белгилүү талаалар дал келсе, мисалы, Person классынын объекттери аты жана туулган күнү дал келсе, барабар деп эсептелет.

equals методун кайра жазуу керек, анткени:

  • Объекттерди мазмуну боюнча туура салыштыруу.
  • HashSet же HashMap сыяктуу топтомдордун туура иштешин камсыз кылуу, алар equals колдонуп элементтердин уникалдуулугун аныктайт.

equals методун кайра жазганда, бул методдор ортосундагы келишимди сактоо үчүн hashCode методун да кайра жазуу маанилүү.

equals жана hashCode методдорунун мисалдары:

@Override
public boolean equals(Object obj) {
    if (this == obj) return true;
    if (obj == null || getClass() != obj.getClass()) return false;
    Person person = (Person) obj;
    return Objects.equals(name, person.name) && Objects.equals(birthDate, person.birthDate);
}

@Override
public int hashCode() {
    return Objects.hash(name, birthDate);
}