Sobes.tech
Junior — Middle

Quais são os princípios básicos da relação entre os métodos equals e hashCode em Java?

sobes.tech IA

Resposta da IA

Princípios básicos da relação entre equals e hashCode em Java:

  • Se dois objetos são iguais segundo equals, o seu hashCode deve ser o mesmo.
  • Se o hashCode de dois objetos é diferente, equals deve retornar false.
  • Se equals retorna false, o hashCode pode coincidir, mas isso não é desejável, pois prejudica o desempenho das estruturas de hash.

Isto garante o funcionamento correto das coleções que usam hashing (HashMap, HashSet), onde hashCode determina a caixa e equals realiza a comparação exata dos objetos.

Exemplo:

@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);
}

Aqui, equals e hashCode baseiam-se no mesmo campo id, garantindo a sua coerência.