Sobrescribiendo Object.hashCode()
El método hashCode() de la clase Object tiene la siguiente firma:
public int hashCode()
Devuelve un identificador único que permite identificar objetos de forma unívoca. Idealmente:
- Debe devolver valores distintos para objetos distintos
- Debe devolver el mismo valor para dos objetos si el resultado de la función equals() es true
- Si se sobrescribe equals(), también se deberá sobrescribir hashCode() en una clase
- equals() y hashcode() deberían ser calculados a partir del mismo conjunto de propiedades
Existen varias formas de implementar el método hashCode():
- Sistema 17-31
@Override public int hashCode() { int resultado = 17; resultado = 31 * resultado + DNI.hashCode(); resultado = 31 * resultado + Nombre.hashCode(); resultado = 31 * resultado + Apellidos.hashCode(); resultado = 31 * resultado + Peso; return resultado; }
- A partir de Java 7, mediante java.util.Objects.hash()
@Override public int hashCode() { return java.util.Objects.hash(this.Nombre, this.Apellidos, this.DNI, this.Peso); }