在 Guava 的 ImmutableMap 的 javadocs 中它说:
性能说明:与 HashMap 不同,ImmutableMap 没有针对具有慢 Object.equals(java.lang.Object) 或 Object.hashCode() 实现的元素类型进行优化。您可以通过让元素类型缓存其自己的哈希码并利用缓存的值来缩短慢速等于算法,从而获得更好的性能。
所以我的第一个问题是我如何知道我的元素是否具有缓慢的 .equals 或 .hashCode 实现?在我的具体实例中,我使用 java Enum 作为我的键,因此它具有 .equals 和 .hashCode 的有效默认实现,对吗?(我假设这些值的实现是无关紧要的,只要您不使用值的值访问地图。)
我的第二个问题是“让你的元素类型缓存它自己的哈希码”是什么意思!谷歌搜索我似乎无法找到你如何做到这一点的例子。我想这可能意味着您最终会在哈希码中使用哈希码?所以我进入哈希码桶,然后 .equals 方法在其中使用第二组哈希码?