86.    hashCode (método) public int hashCode()

Método estándar disponible en todos los objetos.

Devuelve un número entero propio que caracteriza el objeto.

El método base proporcionado en java.lang.Object es heredado por todos los objetos, devolviendo un valor único, exclusivo e inmutable para cada objeto creado.

Las clases creadas por el programador pueden devolver otro valor con la única condición de que

·         si dos objetos A y B son iguales según el método “equals()”,
entonces ambos deben devolver el mismo hashCode

a.equals(b) => a.hashCode() == b.hashCode()

es decir, que el valor “hash” de un objeto no tiene porque ser ni único, ni exclusivo, ni inmutable.

El valor “hash” sirve para discriminar rápidamente si dos objetos son diferentes antes de llamar a equals():

if (a.hashCode() == b.hashCode() && a.equals(b))

Regla: si redefine equals(), debe redefinir hashCode().

Ver "equals()".

Temas relacionados

Vademécum
Patrón básico
Patrón: objetos iguales si son iguales algunos campos
Ejemplo de otros tipos de equivalencia
Si hashCode() está mal hecho …