回答編集履歴
2
hashCode()を変更
answer
CHANGED
@@ -88,4 +88,19 @@
|
|
88
88
|
[HashMap/Setにまつわる2つの事](http://d.hatena.ne.jp/a-hisame/20101227/1293467830)
|
89
89
|
[Immutable objects and hashmap keys](https://stackoverflow.com/questions/20212440/immutable-objects-and-hashmap-keys)
|
90
90
|
|
91
|
-
Java の基礎として知ておくべき。調べたうえで疑問が残るなら、別の質問をポストしてください。
|
91
|
+
Java の基礎として知ておくべき。調べたうえで疑問が残るなら、別の質問をポストしてください。
|
92
|
+
|
93
|
+
### hashCode() を Effective Java にあわせる (2019-05-09)
|
94
|
+
|
95
|
+
J. Broch さんはこれがベストではないと断っていますが、Effective Java にあわせます。
|
96
|
+
|
97
|
+
```Java
|
98
|
+
@Override
|
99
|
+
public int hashCode() {
|
100
|
+
int result = 17;
|
101
|
+
result = result * 31 + pk1.hashCode();
|
102
|
+
result = result * 31 + pk2.hashCode();
|
103
|
+
return result;
|
104
|
+
}
|
105
|
+
```
|
106
|
+
pk1、pk2 はプライマリキーなので null になりえないことが前提です。また final な変数ゆえに1度だけ計算してキャッシュすることもできます。
|
1
追記
answer
CHANGED
@@ -74,4 +74,18 @@
|
|
74
74
|
}
|
75
75
|
|
76
76
|
}
|
77
|
-
```
|
77
|
+
```
|
78
|
+
|
79
|
+
### After のマージコンストラクター (2019-05-08)
|
80
|
+
|
81
|
+
Map.merge()を使うと map に格納する型が合わず型変換が必要になる。After のコンストラクターにマージ機能を持たせるほうが凝集度が高くなるし、畳み込みにより2件以上のマージができると判断。
|
82
|
+
|
83
|
+
### キーオブジェクトの equals()/hashCode()、immutable (2019-05-08)
|
84
|
+
|
85
|
+
参考書は『Effective Java』 第1版〜第3版 のどれでもよい、読んでみてください。
|
86
|
+
|
87
|
+
Mapのキーについての議論
|
88
|
+
[HashMap/Setにまつわる2つの事](http://d.hatena.ne.jp/a-hisame/20101227/1293467830)
|
89
|
+
[Immutable objects and hashmap keys](https://stackoverflow.com/questions/20212440/immutable-objects-and-hashmap-keys)
|
90
|
+
|
91
|
+
Java の基礎として知ておくべき。調べたうえで疑問が残るなら、別の質問をポストしてください。
|