Junior — Middle
Quais são as consequências se dois objetos tiverem o mesmo código hash?
sobes.tech IA
Resposta da IA
Se dois objetos têm o mesmo código de hash, isso é chamado de colisão de hash. Em Java, isso é normal e esperado, pois o código de hash é um int, e pode haver muito mais objetos. Consequências:
- As colisões podem diminuir o desempenho das estruturas de dados hash (por exemplo, HashMap ou HashSet), pois objetos com o mesmo código de hash serão armazenados na mesma balde (bucket), e para procurar será necessário comparar os objetos usando equals.
- É importante que, em caso de código de hash igual, o método equals diferencie corretamente os objetos, caso contrário, os dados podem ser sobrescritos ou perdidos.
Exemplo:
Map<MyObject, String> map = new HashMap<>();
// Se MyObject redefine hashCode(), mas equals() não considera todos os campos,
// podem ocorrer erros ao trabalhar com a coleção.