Java'da equals() va hashCode() metodlari o'rtasidagi farqlarni tushuntiring va ular birga nima uchun kerakligini aytib bering.
sobes.tech AI
AIdan javob
Java'dagi equals() va hashCode() metodlari ob'ektlarni taqqoslash va ularni kolleksiyalarda ishlatish bilan bog'liq.
-
equals()ikki ob'ektning ma'noda (mantiqan) teng yoki teng emasligini aniqlaydi. Standartda,Objectsinfida, u referenslarni taqqoslaydi (ya'ni, xotirada bir xil ob'ektlar yoki yo'q), lekin odatda, mazmunini taqqoslash uchun qayta yoziladi. -
hashCode()ob'ektning butun sonli qiymati — hash-kodini qaytaradi. Masalan,HashMap,HashSetkabi hash asosidagi kolleksiyalarda tezkor qidiruv uchun ishlatiladi.
Agar ikki ob'ekt equals() bilan teng deb hisoblanadigan bo'lsa, ularning hashCode() qiymati ham bir xil bo'lishi kerak. Bu qoidalar hash asosidagi kolleksiyalarning to'g'ri ishlashini ta'minlaydi.
Misol:
class Person {
String name;
int age;
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof Person)) return false;
Person p = (Person) o;
return age == p.age && name.equals(p.name);
}
@Override
public int hashCode() {
return Objects.hash(name, age);
}
}
Bu yerda, equals() maydonlarni taqqoslaydi, va hashCode() ayni maydonlarga asoslangan hashni qaytaradi, bu esa izchillikni ta'minlaydi.