Guava の ImmutableMap の javadoc には、次のように書かれています。
パフォーマンスに関する注意事項: HashMap とは異なり、ImmutableMap は、遅い Object.equals(java.lang.Object) または Object.hashCode() 実装を持つ要素タイプに対して最適化されていません。エレメント タイプに独自のハッシュ コードをキャッシュさせ、キャッシュされた値を使用して低速の equals アルゴリズムをショートサーキットすることにより、パフォーマンスを向上させることができます。
私の最初の質問は、要素の .equals または .hashCode の実装が遅いかどうかをどのように知ることができるかということです。私の特定のインスタンスでは、Java Enum をキーとして使用しているため、.equals と .hashCode の効率的なデフォルト実装がありますよね? (値の値を使用してマップにアクセスしない限り、値の実装は無関係であると思います。)
私の 2 番目の質問は、「エレメント タイプに独自のハッシュ コードをキャッシュさせる」ことの意味です。グーグルで調べてみると、あなたがそれをどのように行うかの例を見つけることができなかったようです. おそらく、ハッシュコード内のハッシュコードで終わることを意味すると思いますか? ハッシュコード バケットに入ると、.equals メソッドはその中で 2 番目のハッシュコード セットを使用しますか?