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.