Sobes.tech
Junior — Middle

Por que é recomendado implementar os métodos equals() e hashCode() conjuntamente ao definir uma classe?

sobes.tech IA

Resposta da IA

Os métodos equals() e hashCode() estão relacionados e devem ser implementados em conjunto para garantir o comportamento correto dos objetos em coleções como HashMap, HashSet e outras baseadas em hashing.

Se dois objetos forem considerados iguais pelo equals(), então o hashCode() deles deve retornar o mesmo valor. Caso contrário, as coleções podem funcionar incorretamente: por exemplo, um objeto pode não ser encontrado na tabela hash, mesmo que esteja lá.

Exemplo:

@Override
public boolean equals(Object o) {
    if (this == o) return true;
    if (o == null || getClass() != o.getClass()) return false;
    MyClass myClass = (MyClass) o;
    return id == myClass.id;
}

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

Assim, a implementação conjunta garante a consistência e o funcionamento correto dos objetos nas coleções.