O método “hashCode” tem por objetivo ser uma verificação aproximada da igualdade de dois objetos.

Muitas bibliotecas comparam os códigos hash de dois objetos antes de compararem os mesmo objetos utilizando-se o método “equals”. Isso se deve basicamente em função da velocidade de processamento, ou seja, comparar dois códigos hash deve ser bem mais rápido que comparar dois estados de forma plena.

Percebe-se então que a finalidede do método “hashCode” é oferecer um recurso de processamento mais rápido e semelhante ao do método “equals”. Portanto, “hasCode” e “equals” devem ser considerados um par, o que significa que a sobrescrita de um deles implicará, obrigatoriamente, a sobrescrita do outro. Não realizar tal procedimento é quebrar a regra do contrato geral do método hashCode da classe Object.

Contudo não se esqueça de que a implementação de ambos, apesar de semelhantes, devem seguir, cada um o seu próprio propósito.

Uma boa função de hash tende a produzir códigos de hash diferentes para objetos distintos. O ideal é que uma função de hash distribua qualquer coleção considerável de instâncias diferentes uniformemente por todos os valores de hash possíveis.

Copyright © 2016 AIEC.