【发布时间】:2015-09-28 07:01:33
【问题描述】:
在内部,Hashmaps 使用hashfunction 来查找被查询的key 所属的bin。每个bins 本身就是一个LinkedList。
如果这些LinkedLists 可能会变得很长,并且LinkedLists 没有恒定的访问时间,而是线性访问时间,我不明白访问时间如何保持恒定。
即使 bin 由于某种原因变得太大,Java Collections 库如何设法保证恒定的访问时间?内部发生了什么? Java 在内部做了什么来最大程度地减少这种负面影响?
【问题讨论】:
-
它不做任何保证。 O(1) 性能是最佳情况和平均情况,但前提是您使用的是体面的散列函数和非病态数据集。从 HashMap 中获得 O(n) 性能并非不可能。
-
内部库是否有某种故障保护 - 某种方式可以最大限度地减少这种危险?
-
注意:这是一个实现细节。 IBM 可以以不同的方式实现这一点。
标签: java data-structures hashmap