Junior — Middle
Qual é a importância de sobrescrever o método hashCode para objetos usados em coleções?
sobes.tech IA
Resposta da IA
A sobrescrita do método hashCode é importante para o funcionamento correto dos objetos em coleções baseadas em hash, como HashMap, HashSet e Hashtable. Essas coleções usam o código hash do objeto para buscas e armazenamento rápidos. Se hashCode não for sobrescrito junto com equals, objetos considerados iguais por equals podem ter códigos hash diferentes, levando a um comportamento incorreto das coleções: por exemplo, duplicados podem não ser detectados, ou um objeto pode não ser encontrado na busca.
Regras para sobrescrita:
- Se dois objetos são iguais segundo
equals, seushashCodedevem ser iguais. - Se
equalsretornafalse, os códigos hash podem ser iguais, mas é melhor minimizar colisõ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);
}
Aqui, objetos são considerados iguais se tiverem o mesmo id, e o código hash é construído com base nesse campo.