Middle
Por que o hashCode() de diferentes objetos pode retornar valores iguais?
sobes.tech IA
Resposta da IA
Porque o intervalo de valores possíveis do hash (int) é muito menor do que o intervalo de valores possíveis do conteúdo dos objetos. De fato, essa propriedade de qualquer função de hash é comprimir os dados de entrada em um intervalo fixo ou menor de valores. Colisões de hash (quando objetos diferentes têm o mesmo hash) são inevitáveis.
Para o funcionamento correto das coleções baseadas em hash (por exemplo, HashMap, HashSet), as seguintes regras devem ser seguidas:
- Se Objects.equals(a, b), então a.hashCode() == b.hashCode().
- Se !Objects.equals(a, b), então a.hashCode() pode ser igual ou diferente de b.hashCode().
As coleções usam hashCode() para determinar rapidamente um "balde" potencial para colocar ou procurar um elemento, e depois usam equals() para verificar com precisão dentro desse balde.