Wat retourneert de methode HasMap.get() als de methoden equals en hashCode niet zijn overschreven?
sobes.tech AI
Antwoord van AI
null wordt geretourneerd als de sleutel die wordt gebruikt voor de zoekactie niet precies hetzelfde object is (dezelfde referentie) als dat werd gebruikt bij het invoegen.
De reden hiervoor is dat HashMap een combinatie van hashCode() en equals() gebruikt om de "gelijkheid" van sleutels te bepalen. Als deze methoden niet worden overschreven, worden de implementaties van Object gebruikt.
Object.hashCode()geeft meestal een waarde gebaseerd op het geheugenadres van het object, dus uniek voor elke instantie.Object.equals()controleert eenvoudigweg de referentie-equality (this == obj).
Om HashMap.get() een element te laten vinden met de standaard equals en hashCode(), moeten beide voorwaarden waar zijn:
- De hash-codes (
Object.hashCode()) moeten gelijk zijn, wat zeer onwaarschijnlijk is voor verschillende objecten. - De objecten moeten referentie-equal zijn (
Object.equals()), dat wil zeggen, het moet dezelfde instantie zijn.
Als je een object in een HashMap plaatst en vervolgens probeert het op te halen met een ander object met dezelfde veldwaarden (maar niet dezelfde instantie), zullen hashCode en equals standaard ze als verschillend beschouwen, en get() zal null retourneren.