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