Иногда мне нужно реализовать метод hashCode () объекта obj, объединив хэш-коды нескольких его членов-экземпляров. Например, если у комбинационного obj есть члены a, b и c, я часто вижу, что ppl реализует его как
int hashCode(){
return 31 * 31 * a.hashCode() + 31 * b.hashCode() + c.hashCode();
}
Откуда взялось это магическое число 31? Длина 4 байта или просто простое число?
Есть ли другой предпочтительный / стандартный способ реализации hashCode ()?