Sobes.tech
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:

  1. Se Objects.equals(a, b), então a.hashCode() == b.hashCode().
  2. 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.