Cosa restituirà il metodo HasMap.get() se i metodi equals e hashCode non sono sovrascritti?
sobes.tech AI
Risposta dell'AI
null verrà restituito se la chiave utilizzata per la ricerca non è esattamente lo stesso oggetto (ha lo stesso riferimento) di quello usato per inserire l'elemento.
Il motivo è che HashMap utilizza una combinazione di hashCode() e equals() per determinare "l'uguaglianza" delle chiavi. Se questi metodi non sono sovrascritti, vengono usate le implementazioni di Object.
Object.hashCode()di solito restituisce un valore basato sull'indirizzo di memoria dell'oggetto, quindi unico per ogni istanza.Object.equals()verifica semplicemente l'uguaglianza per riferimento (this == obj).
Pertanto, affinché HashMap.get() trovi un elemento usando equals e hashCode() non sovrascritti, devono essere vere entrambe le condizioni:
- I codici hash (
Object.hashCode()) devono essere uguali, cosa molto improbabile per oggetti diversi. - Gli oggetti devono essere uguali per riferimento (
Object.equals()), cioè devono essere ** la stessa istanza **.
Se inserisci un oggetto in un HashMap e poi provi a recuperarlo usando un altro oggetto con gli stessi valori di campo (ma non la stessa istanza), hashCode e equals di default li considereranno diversi, e get() restituirà null.