Эффективная реализация hashCode ()
Я часто автоматически генерирую классыhashCode()
метод, использующий IntelliJ IDEA, и обычно метод принимает форму:
result = 31 * result + ...
Мой вопрос: какова цель умножения на 31? Я знаю, что это простое число, но зачем конкретно выбирать 31? Кроме того, если реализацияhashCode()
для особенно малого / большого набора данных люди подойдут к этой проблеме по-другому?