Junior — Middle
Como é garantida a consistência entre os métodos hashCode() e equals() em Java e por que isso é importante?
sobes.tech IA
Resposta da IA
Em Java, os métodos hashCode() e equals() devem estar alinhados para que os objetos funcionem corretamente em coleções como HashMap ou HashSet. Regras:
- Se dois objetos são iguais segundo equals(), então o seu hashCode() deve retornar o mesmo valor.
- Se o hashCode() de dois objetos for diferente, então equals() deve retornar false.
Isto é importante porque as tabelas de hash usam primeiro hashCode() para uma busca rápida, e depois equals() para uma comparação exata. Não cumprir este contrato pode levar a um funcionamento incorreto das coleções.
Exemplo:
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Person person = (Person) o;
return id == person.id;
}
@Override
public int hashCode() {
return Objects.hash(id);
}