項目 9 のサンプル コードは次のとおりです。
public final class PhoneNumber {
private final short areaCode;
private final short prefix;
private final short lineNumber;
@Override
public int hashCode() {
int result = 17;
result = 31 * result + areaCode;
result = 31 * result + prefix;
result = 31 * result + lineNumber;
return result;
}
}
ページ 48 には次のように記載されています。
2 による乗算がビット シフトと同等であるという概念を理解しています。また、大きな数に大きな奇数の素数を掛けると、依然としてオーバーフローが発生する (したがって情報が失われる) こともわかっています。私が得られないのは、大きな奇数素数による乗算から生じる情報損失が、大きな偶数による乗算から生じる情報損失よりも好ましい理由です。