【发布时间】:2014-02-12 22:29:58
【问题描述】:
在添加新的键值对时,我有几个关于重建 HashMaps 的问题。我将根据这些事实提出问题(它们对于 Oracle JVM 是正确的,不确定它们对于其他 JVM 是否正确):
- 每次当您将 HashMap 增长到大于阈值(阈值 = loadFactor*numberOfEntries)时,调整大小重建
HashMap以获得更大的内部表数组。新创建的 Entry 放在哪个桶中并不重要 - Map 仍然会变大。即使所有条目都进入一个存储桶(即它们的密钥hashCode()返回相同的数字)。 -
HashMap在删除数据时不会缩小。即使从HashMap中删除所有键,它的表的内部大小也不会改变。
现在问题:
- 这些事实是否正确?
如果是,那么:
- 为什么以这种方式实现调整大小?即使显然没有必要,是否也打算增加内表?还是错误?
- 为什么不收缩?
【问题讨论】:
标签: java dictionary hashmap resize