Middle
Waarom kan hashCode() van verschillende objecten dezelfde waarden teruggeven?
sobes.tech AI
Antwoord van AI
Omdat het bereik van mogelijke hash-waarden (int) veel kleiner is dan het bereik van mogelijke inhoudswaarden van objecten. In feite is deze eigenschap van elke hashfunctie dat het invoergegevens comprimeert in een vast of kleiner bereik van waarden. Hash-collisies (wanneer verschillende objecten dezelfde hash-code hebben) zijn onvermijdelijk.
Voor het correct functioneren van op hashing gebaseerde collecties (bijvoorbeeld HashMap, HashSet) moeten de volgende regels worden gevolgd:
- Als Objects.equals(a, b), dan is a.hashCode() == b.hashCode().
- Als !Objects.equals(a, b), dan kan a.hashCode() gelijk of verschillend zijn van b.hashCode().
Collecties gebruiken hashCode() om snel een potentiële "emmer" te bepalen voor het plaatsen of zoeken van een element, en gebruiken vervolgens equals() voor een nauwkeurige controle binnen die emmer.