page contents

Hashmap 什么时候进行扩容呢?

轩辕小不懂 发布于 2022-07-29 15:52
阅读 637
收藏 0
分类:框架系列
3985
Nen
Nen
- 程序员

当 hashmap 中的元素个数超过数组大小 loadFactor 时,就会进行数组扩容, loadFactor 的默认值为 0.75,也就是说,默认情况下,数组大小为 16,那么当hashmap 中元素个数超过 160.75=12 的时候,就把数组的大小扩展为 216=32, 即扩大一倍,然后重新计算每个元素在数组中的位置,而这是一个非常消耗性能的操作,所以如果我们已经预知 hashmap 中元素的个数,那么预设元素的个数能够有效的提高 hashmap 的性能。比如说,我们有 1000 个元素 new HashMap(1000), 但是理论上来讲 new HashMap(1024) 更合适,不过上面 annegu 已经说过,即使是 1000,hashmap 也自动会将其设置为 1024。但是 new HashMap(1024) 还不是更合适的,因为 0.75*1000 < 1000, 也就是说为了让 0.75 * size > 1000, 我们必须这样 new HashMap(2048) 才最合适,既考虑了 & 的问题,也避免了 resize 的问题。

请先 登录 后评论