Junior — Middle
¿Podría explicar la finalidad del método hashCode y su papel al usar contratos en Java?
sobes.tech AI
Respuesta de la IA
El método hashCode() en Java devuelve un valor entero que representa el hash del objeto. Se utiliza en colecciones basadas en hashing, como HashMap, HashSet.
El papel de hashCode() en el contrato con equals():
- Si dos objetos son iguales según el método
equals(), entonces sushashCode()deben devolver el mismo valor. - Si
equals()devuelvefalse, entonceshashCode()puede devolver diferentes valores, pero no es obligatorio.
Esto es importante para el correcto funcionamiento de las estructuras hash: primero se calcula el hash para determinar la cubeta, y luego se llama a equals() para la comparación exacta.
Ejemplo de sobrescritura:
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
MyClass myClass = (MyClass) o;
return field.equals(myClass.field);
}
@Override
public int hashCode() {
return field.hashCode();
}
El incumplimiento de este contrato puede llevar a un funcionamiento incorrecto de las colecciones y errores difíciles de detectar.