• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

java 中的 HashMap的初始容量为什么是16(2的幂)和Hashtable的初始容量为什么是11(素数)

武飞扬头像
it1352
帮助46

前言

本文介绍了为什么HashMap的初始容量是16(2的幂)和Hashtable的初始容量是11(素数)?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

遇到的问题

当您的 hashCode 为负数时,是否使存储桶的索引为正数?

问题答案

对于HashMap,存储Map的条目的数组中的索引是这样计算的(其中h 由 key 的 hashCode 计算得出):

static int indexFor(int h, int length) {
    return h & (length-1);
}

其中 length 是数组的长度.

这仅在 length 是 2 的幂时有效.如果 length 不是 2 的幂,则必须将此代码更改为效率较低的 返回 h % 长度.

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanehcj
系列文章
更多 icon
同类精品
更多 icon
继续加载