首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么HashMap的初始容量是16 (2的幂),而哈希表的初始容量是11(质数)?

为什么HashMap的初始容量是16 (2的幂),而哈希表的初始容量是11(质数)?
EN

Stack Overflow用户
提问于 2014-12-02 22:11:16
回答 1查看 2.1K关注 0票数 8

如果你知道,请描述一下原因。我用谷歌搜索了一下,但没有找到有充分解释的答案。

是为了在你的hashCode为负时使存储桶的索引为正吗?

EN

回答 1

Stack Overflow用户

发布于 2014-12-02 22:16:00

对于HashMap,存储映射条目的数组中的索引是这样计算的(其中h是根据键的hashCode计算的):

代码语言:javascript
复制
static int indexFor(int h, int length) {
    return h & (length-1);
}

其中length是数组的长度。

这只在length是2的幂的时候有效,如果length不是2的幂,你就必须把这段代码改成效率较低的return h % length

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27251480

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档