Sobes.tech
Junior — Middle

Java-da hashCode() və equals() metodlarının uyğunluğu necə təmin edilir və bu niyə vacibdir?

sobes.tech Süni İntellekt

AI-dan cavab

Java-da hashCode() və equals() metodlarının uyğun olması vacibdir ki, obyektlər HashMap və ya HashSet kimi kolleksiyalarda düzgün işləsin. Qaydalar:

  • Əgər iki obyekt equals() ilə bərabərdirsə, onların hashCode() eyni dəyəri qaytarmalıdır.
  • Əgər iki obyektin hashCode() fərqlidirsə, equals() mütləq false qaytaracaq.

Bu vacibdir, çünki hash cədvəlləri əvvəlcə hashCode() istifadə edir sürətli axtarış üçün, sonra isə equals() ilə dəqiq müqayisə edir. Bu şərtə əməl edilməzsə, kolleksiyaların düzgün işləməməsinə səbəb ola bilər.

Nümunə:

@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);
}