Sobes.tech
Junior — Middle

Java'da hashCode() va equals() metodlarining mos kelishini qanday ta'minlanadi va bu nima uchun muhim?

sobes.tech AI

AIdan javob

Java'da hashCode() va equals() metodlari mos kelishi kerak, shunda ob'ektlar HashMap yoki HashSet kabi kolleksiyalarda to'g'ri ishlaydi. Qoidalar:

  • Agar ikki ob'ekt equals() bo'yicha teng bo'lsa, ularning hashCode() ham bir xil qiymatni qaytarishi kerak.
  • Agar ikki ob'ektning hashCode() qiymati farq qilsa, equals() albatta false qaytaradi.

Bu muhim, chunki hash-jadvallar avvalo hashCode() yordamida tezkor qidiruvni amalga oshiradi, so'ngra aniq solishtirish uchun equals() ni ishlatadi. Bu shartga rioya qilmaslik kolleksiyalarning noto'g'ri ishlashiga olib kelishi mumkin.

Misol:

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