Implementação eficiente de hashCode ()
Eu geralmente gero automaticamente uma classehashCode()
método usando IntelliJ IDEA e normalmente o método assume a forma:
result = 31 * result + ...
Minha pergunta é qual é o propósito de multiplicar por 31? Eu sei que este é um número primo, mas por que escolher 31 especificamente? Além disso, se implementar umahashCode()
para um conjunto de dados particularmente pequeno / grande, as pessoas abordariam esse problema de maneira diferente?