为什么调整大小是按原样实现的?
2022-09-01 19:19:53
我有几个关于在添加新的键值对时重建的问题。我将根据这些事实提出问题(它们对于Oracle JVM是正确的,不确定它们对于其他JVM是否正确):HashMaps
- 调整大小每次将 HashMap 增长到大于阈值时都会重新生成一个更大的内部表数组(阈值 = loadFactor*numberOfEntries)。新创建的条目放在哪个存储桶中并不重要 - Map仍将变大。即使所有条目都进入一个存储桶(即它们的键返回相同的数字)。
HashMap
hashCode()
-
HashMap
删除数据时不会收缩。即使从 中删除所有键,其表的内部大小也不会改变。HashMap
现在的问题是:
- 这些事实是否正确?
如果是,则:
- 为什么要以这种方式调整大小?是否打算在明显没有必要的情况下扩大内部表?还是一个错误?
- 为什么它不会收缩?