Sobes.tech
Junior — Middle

Javaда hashCode() жана equals() методдору кандайча шайкеш келет жана бул эмне үчүн маанилүү?

sobes.tech AI

AIден жооп

Javaда hashCode() жана equals() методдору туура болушу керек, анткени объекттер HashMap же HashSet сыяктуу топтомдордо туура иштеши үчүн. Эрежелер:

  • Эгер эки объект equals() боюнча бирдей болсо, алардын hashCode() бирдей маанини кайтаруусу керек.
  • Эгер эки объекттин hashCode() айырмаланса, анда equals() сөзсүз түрдө false кайтарат.

Бул маанилүү, себеби хеш таблицалары биринчи кезекте hashCode() колдонуп тез издөө жүргүзөт, андан соң equals() менен так салыштыруу жасайт. Бул келишимдин бузулушу топтомдордун туура иштебей калуусуна алып келиши мүмкүн.

Мисал:

@Override
public boolean equals(Object o) {
    if (this == o) return true;
    if (o == null || getClass() != o.getClass()) return false;
    Person person = (Person) o;
    return id == person.id;
}

@Override
public int hashCode() {
    return Objects.hash(id);
}