正如我们所知,Java集合框架中的每个类在冲突解决时都使用链式方法,但是IdentityHashMap却使用线性探测。
如果您查看Java文档,它已经提到:
对于许多JRE实现和操作混合,此类将比HashMap(其使用链接而不是线性探测)产生更好的性能。
我的问题是:
1. 如果线性探测性能更好,为什么实现者只在IdentityHashMap中使用线性探测,而不是所有Map实现?
2. 为什么线性探测比链式方法有更好的性能表现?
如果您查看Java文档,它已经提到:
对于许多JRE实现和操作混合,此类将比HashMap(其使用链接而不是线性探测)产生更好的性能。
我的问题是:
1. 如果线性探测性能更好,为什么实现者只在IdentityHashMap中使用线性探测,而不是所有Map实现?
2. 为什么线性探测比链式方法有更好的性能表现?
Map
实现是为那些对象标识足够且性能是关键因素的罕见情况而设计的。 - Andreas Dolk