equals() y hashCode()
El método
equals() va ligado al método “hashCode() que devuelve un entero que caracteriza al
objeto, cumpliento la propiedad de que dos objeto que sean equals() deben
devolver el mismo hashCode(). Es decir
a.equals(b) => a.hashCode() ==
b.hashCode()
Esto permite que
se pueda escribir código para buscar objetos iguales que primero miran el
hashCode() y luego, si el hashCode() es igual, se mira el equals():
if (a.hashCode() == b.hashCode()
&& a.equals(b))
Las clases que
hacen esta discriminación previa por hashCode(), simplemente funcionan mal si
se redefine equals() pero no se redefine hashCode(). Esto ocurre, por ejemplo,
en las clases HashMap y HashSet de la librería estándar de java.
Regla: si
redefine equals(), debe redefinir hashCode().
Temas relacionados
63. equals (método) public boolean equals(Object)