Junior — Middle
Kokie yra pagrindiniai principai, susiję su equals ir hashCode metodais Java kalboje?
sobes.tech AI
Atsakymas iš AI
Pagrindiniai ryšio tarp equals ir hashCode Java kalboje principai:
- Jei du objektai yra lygūs pagal equals, jų hashCode turi būti tas pats.
- Jei dviejų objektų hashCode skiriasi, equals privalo grąžinti false.
- Jei equals grąžina false, hashCode gali sutapti, tačiau tai nėra pageidautina, nes blogina hash struktūrų našumą.
Tai užtikrina teisingą kolekcijų, naudojančių hash'ą (HashMap, HashSet), veikimą, kur hashCode nustato kibirą, o equals – tikslią objektų palyginimą.
Pavyzdys:
@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);
}
Čia equals ir hashCode yra pagrįsti tuo pačiu lauku – id, užtikrinant jų nuoseklumą.