Junior — Middle
Ai putea să explici scopul metodei hashCode și rolul său în utilizarea contractelor în Java?
sobes.tech AI
Răspuns de la AI
Metoda hashCode() în Java returnează o valoare întreagă care reprezintă hash-ul obiectului. Este utilizată în colecții bazate pe hashing, cum ar fi HashMap, HashSet.
Rolul hashCode() în contractul cu equals():
- Dacă două obiecte sunt egale conform metodei
equals(), atunci valorile lorhashCode()trebuie să fie aceleași. - Dacă
equals()returneazăfalse, atuncihashCode()poate returna valori diferite, dar nu este obligatoriu.
Acest lucru este important pentru funcționarea corectă a structurilor hash: mai întâi se calculează hash-ul pentru a determina coșul, apoi se apelează equals() pentru comparație exactă.
Exemplu de suprascriere:
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
MyClass myClass = (MyClass) o;
return field.equals(myClass.field);
}
@Override
public int hashCode() {
return field.hashCode();
}
Nerespectarea acestui contract poate duce la funcționarea incorectă a colecțiilor și la erori greu de detectat.