Junior — Middle
Java-da equals və hashCode metodlarının necə əlaqəli olduğunu və onların düzgün tətbiqinin kolleksiyaların işləməsi üçün niyə vacib olduğunu izah edin.
sobes.tech Süni İntellekt
AI-dan cavab
Java-da equals və hashCode metodları sıx əlaqəlidir və obyektləri müqayisə etmək və HashMap, HashSet kimi kolleksiyalarda saxlamaq üçün istifadə olunur.
Qaydalar:
- Əgər iki obyekt
equalsmetoduna görə bərabərdirsə (yəni,a.equals(b) == true), onlarınhashCodedəyəri eyni olmalıdır. - Əgər obyektlərin
hashCodedəyərləri fərqlidirsə,equalsonlar üçünfalseqaytarmalıdır.
Niyə vacibdir:
Hash əsaslı kolleksiyalar əvvəlcə hashCode istifadə edərək qutunu (bucket) tez tapır, sonra equals ilə qutdakı obyektləri dəqiq müqayisə edir. Əgər bu metodlar düzgün tətbiq olunmayıbsa, obyektlər kolleksiyada tapılmaya bilər, hətta onlar məntiqi olaraq bərabər olsa da.
Düzgün tətbiq nümunəsi:
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
MyClass myClass = (MyClass) o;
return field1.equals(myClass.field1) && field2 == myClass.field2;
}
@Override
public int hashCode() {
return Objects.hash(field1, field2);
}
Bu şəkildə, equals və hashCode metodlarının düzgün tətbiqi kolleksiyaların düzgün işləməsini təmin edir və axtarış, əlavə və silmə zamanı səhvlərin qarşısını alır.