そこで私はハッシュマップある時点で、次のように指摘されました。
「不変性により、さまざまなキーのハッシュコードをキャッシュすることも可能になり、全体的な取得プロセスが非常に高速になり、
Integer
Java Collection API によって提供される String やさまざまなラッパー クラス (例: ) が非常に優れたHashMap
キーであることが示唆されます。」
よく分かりません…なぜでしょうか?
ベストアンサー1
String#hashCode
:
private int hash;
...
public int hashCode() {
int h = hash;
if (h == 0 && count > 0) {
int off = offset;
char val[] = value;
int len = count;
for (int i = 0; i < len; i++) {
h = 31*h + val[off++];
}
hash = h;
}
return h;
}
の内容はString
決して変更されないため、クラスの作成者はハッシュを一度計算した後はそれをキャッシュすることを選択しました。この方法では、同じ値を再計算する時間を無駄にしません。