каков предпочтительный способ реализации hashCode ()?

Иногда мне нужно реализовать метод hashCode () объекта obj, объединив хэш-коды нескольких его членов-экземпляров. Например, если у комбинационного obj есть члены a, b и c, я часто вижу, что ppl реализует его как


int hashCode(){
   return 31 * 31 * a.hashCode() + 31 * b.hashCode() + c.hashCode();
}

Откуда взялось это магическое число 31? Длина 4 байта или просто простое число?

Есть ли другой предпочтительный / стандартный способ реализации hashCode ()?

8
задан dolaameng 6 October 2010 в 03:06
поделиться