Sobes.tech
Junior — Middle

¿Cuáles son los principios básicos de la relación entre los métodos equals y hashCode en Java?

sobes.tech AI

Respuesta de la IA

Principios básicos de la relación entre equals y hashCode en Java:

  • Si dos objetos son iguales según equals, su hashCode debe ser el mismo.
  • Si el hashCode de dos objetos es diferente, equals debe devolver false.
  • Si equals devuelve false, el hashCode puede coincidir, pero esto no es recomendable, ya que degrada el rendimiento de las estructuras de hash.

Esto garantiza el correcto funcionamiento de las colecciones que utilizan hashing (HashMap, HashSet), donde hashCode determina la cubeta y equals realiza la comparación exacta de objetos.

Ejemplo:

@Override
public boolean equals(Object obj) {
    if (this == obj) return true;
    if (obj == null || getClass() != obj.getClass()) return false;
    Person person = (Person) obj;
    return Objects.equals(id, person.id);
}

@Override
public int hashCode() {
    return Objects.hash(id);
}

Aquí, equals y hashCode se basan en el mismo campo id, lo que garantiza su coherencia.