Junior — Middle
Qual deve ser a relação mútua entre os métodos equals() e hashCode() em Java para o funcionamento correto dos objetos nas coleções?
sobes.tech IA
Resposta da IA
Em Java, os métodos equals() e hashCode() devem estar em conformidade para o funcionamento correto dos objetos em coleções, especialmente em HashMap e HashSet.
Regras principais:
- Se dois objetos são iguais segundo
equals(), os seus métodoshashCode()devem retornar o mesmo valor. - Se
hashCode()de dois objetos for diferente, eles são considerados diferentes eequals()não é chamado. - Se
hashCode()for igual, os objetos podem ser iguais ou não, dependendo deequals(), por issoequals()é chamado para verificar.
O não cumprimento dessas regras pode levar a comportamentos incorretos das coleções, como não conseguir encontrar um objeto em HashSet ou HashMap.
Exemplo:
@Override
public boolean equals(Object obj) {
if (this == obj) return true;
if (obj == null || getClass() != obj.getClass()) return false;
MyClass other = (MyClass) obj;
return this.id == other.id;
}
@Override
public int hashCode() {
return Integer.hashCode(id);
}