Junior — Middle
Is het mogelijk dat twee objecten die volgens equals niet gelijk zijn, dezelfde hashCode-waarde hebben?
sobes.tech AI
Antwoord van AI
Ja, dat is mogelijk. In Java vereist het contract van de methods equals() en hashCode() dat als twee objecten gelijk zijn volgens equals(), ze ook dezelfde hashCode() moeten hebben. Maar het omgekeerde is niet verplicht: twee objecten met dezelfde hashCode() kunnen niet gelijk zijn volgens equals().
Dit komt doordat hashCode() een vaste grootte integerwaarde retourneert, en verschillende objecten kunnen collisions hebben — dezelfde hash.
Bijvoorbeeld, in collecties zoals HashMap of HashSet, wordt eerst de hashCode() vergeleken, en daarna wordt equals() gebruikt om de exacte gelijkheid van de objecten te bepalen.