Junior — Middle
Kādās gadījumos ir nepieciešams pārrakstīt metodi hashCode() Java valodā, lai nodrošinātu pareizu darbību ar kolekcijām?
sobes.tech AI
Atbilde no AI
Metode hashCode() Java jābūt pārrakstītai, ja pārrakstāt metodi equals(). Tas ir svarīgi, lai objekti pareizi darbotos kolekcijās, kas izmanto hashēšanu, piemēram, HashMap, HashSet un Hashtable.
Ja equals() norāda, ka divi objekti ir vienādi, tad arī to hashCode() ir jāatgriež tāda pati vērtība. Pretējā gadījumā hashēšanas kolekcijas var nedarboties pareizi: piemēram, tās nevarēs atrast objektu vai saglabās dublikātus.
Piemērs:
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
MyClass myClass = (MyClass) o;
return id == myClass.id;
}
@Override
public int hashCode() {
return Objects.hash(id);
}
Šeit id ir lauks, kas nosaka objektu līdzvērtību. Bez hashCode() pārrakstīšanas objekti ar vienādu id var būt ar dažādiem hash kodiem, kas traucēs kolekciju darbību.