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