Sobes.tech
Middle

¿Qué devolverá el método HasMap.get() si los métodos equals y hashCode no están sobrescritos?

sobes.tech AI

Respuesta de la IA

null será devuelto si la clave utilizada para buscar no es exactamente el mismo objeto (tiene la misma referencia) que se usó al insertar el elemento.

La razón es que HashMap usa una combinación de hashCode() y equals() para determinar la "igualdad" de las claves. Si estos métodos no se sobrescriben, se usan las implementaciones de Object.

  1. Object.hashCode() generalmente devuelve un valor basado en la dirección del objeto en memoria, es decir, único para cada instancia.
  2. Object.equals() simplemente verifica la igualdad por referencia (this == obj).

Por lo tanto, para que HashMap.get() encuentre un elemento usando equals y hashCode() no sobrescritos, deben coincidir ambas condiciones:

  • Los códigos hash (Object.hashCode()) deben ser iguales, lo cual es muy poco probable para objetos diferentes.
  • Los objetos deben ser iguales por referencia (Object.equals()), es decir, deben ser la misma instancia del objeto.

Si colocas un objeto en un HashMap y luego intentas obtenerlo usando otro objeto con los mismos valores de campo (pero no la misma instancia), hashCode y equals por defecto los considerarán diferentes, y get() devolverá null.