Junior — Middle
Por que é importante sobrescrever os métodos equals() e hashCode() juntos em Java?
sobes.tech IA
Resposta da IA
Em Java, os métodos equals() e hashCode() estão estreitamente relacionados e são usados para comparar objetos e trabalhar com coleções baseadas em hash (por exemplo, HashMap, HashSet).
Se sobrescrever equals(), mas não hashCode(), objetos considerados iguais por equals() podem ter códigos hash diferentes. Isso viola o contrato segundo o qual objetos iguais devem ter o mesmo hashCode(). Como resultado, as coleções baseadas em hash não funcionarão corretamente: por exemplo, podem não conseguir encontrar um objeto ou podem armazenar duplicados.
Por isso, é sempre importante sobrescrever ambos os métodos juntos para garantir o comportamento correto dos objetos nas coleções e na comparação.
Exemplo de sobrescrita:
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
MyClass myClass = (MyClass) o;
return field1.equals(myClass.field1) && field2 == myClass.field2;
}
@Override
public int hashCode() {
return Objects.hash(field1, field2);
}