【发布时间】:2013-06-16 06:04:06
【问题描述】:
正如我们在 java 集合框架中所知,Map 中的每个类都使用链式解决冲突,但 IdentityHashMap 使用线性探测来解决相同问题。
如果您看到 java 文档,它已经提到:
对于许多 JRE 实现和操作组合,此类将 产生比 HashMap 更好的性能(它使用链接而不是 线性探测)。
我的问题是:
如果线性探测的性能更好,为什么实现者只对
IdentityHashMap而不是所有Map实现使用线性探测 >为什么在线性探测和链接中会有性能提升。
坦克。
【问题讨论】:
-
答案在 javadoc 上。表现。看起来
Map的这种特殊实现是为那些对象标识足够且性能为标准的罕见情况而设计的。 -
@Andreas_D 你能告诉我这对性能有什么帮助吗?
-
@Andreas_D:这没有回答这个问题,因为它引出了一个明显的下一个问题:为什么在这种情况下性能更好,因为它不总是正确的,线性探测比链接更好。是什么支撑着地球?一只乌龟! Well, then what is holding the tortoise up?
-
@Jason 那么他应该问那个可能更有意义的问题,并且不能仅通过查看课程附带的文档来回答。他询问了这种方法背后的原因,程序员告诉我们他们的原因。
标签: java algorithm data-structures collections map