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