Junior — Middle
Millised on põhialused seose vahel meetodite equals ja hashCode Java keeles?
sobes.tech AI
Vastus AI-lt
Java-s equals ja hashCode vahelised põhialused:
- Kui kaks objekti on võrdsed vastavalt equals-ile, siis nende hashCode peab olema sama.
- Kui kahe objekti hashCode on erinev, peab equals kindlasti tagastama false.
- Kui equals tagastab false, võib hashCode olla sama, kuid see ei ole soovitatav, kuna see halvendab hash-struktuuride jõudlust.
See tagab hashimist kasutavate kogumike (HashMap, HashSet) õige toimimise, kus hashCode määrab korvi ja equals teostab objekti täpse võrdluse.
Näide:
@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);
}
Siin põhinevad equals ja hashCode samal väljal – id, mis tagab nende kooskõla.