Wydajna implementacja hashCode ()

Często generuję automatycznie klasyhashCode() metoda używająca IntelliJ IDEA i zazwyczaj metoda ma postać:

result = 31 * result + ...

Moje pytanie brzmi: jaki jest cel mnożenia przez 31? Wiem, że to liczba pierwsza, ale dlaczego wybrać 31? Ponadto, jeśli implementujesz ahashCode() czy dla szczególnie małego / dużego zbioru danych ludzie różnie podchodziliby do tego problemu?

questionAnswers(1)

yourAnswerToTheQuestion