Junior — Middle
Java'da equals va hashCode metodlari o'rtasidagi asosiy prinsiplari qanday?
sobes.tech AI
AIdan javob
Java'da equals va hashCode o'rtasidagi asosiy tamoyillar:
- Agar ikki obyekt equals bo'yicha teng bo'lsa, ularning hashCode'lari ham bir xil bo'lishi kerak.
- Agar ikki obyektning hashCode'lari farq qilsa, equals majburiy ravishda false qaytarishi kerak.
- Agar equals false qaytaradigan bo'lsa, hashCode mos kelishi mumkin, lekin bu tavsiya etilmaydi, chunki bu hash tuzilmalarining ishlashini yomonlashtiradi.
Bu hash ishlatadigan kolleksiyalar (HashMap, HashSet) to'g'ri ishlashini ta'minlaydi, bunda hashCode qutini belgilaydi va equals obyektlarni aniq solishtirish uchun ishlatiladi.
Misol:
@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(id, person.id);
}
@Override
public int hashCode() {
return Objects.hash(id);
}
Bu yerda, equals va hashCode bir xil maydon id asosida qurilgan, bu ularning izchilligini ta'minlaydi.