hashmap默认长度扩充两次以后变为多少

 我来答
简单的拼搏丶
2018-11-10
知道答主
回答量:25
采纳率:0%
帮助的人:9.6万
展开全部
默认是16,每次都是2的倍数,所以两次扩充之后变成64
布达拉宫花园
2017-03-14 · TA获得超过153个赞
知道小有建树答主
回答量:593
采纳率:28%
帮助的人:260万
展开全部
  hashMap用了一个名字为table的数组;还有若干个名字为entry的链表。看hashMap是如何应用这些数据结构的。用插 入<key,value>举例:hashMap首先会通过key得到其hashCode,具体的hash函数就不说了(因为没多大意义);然 后把key的hashCode%table.length,就是拿hashCode模table数组大小,得到的余数就是key所在table数组中的下 标(实际不是key的下标,是entry类);但这样做有个问题,可能不同key却有一样的hasdCode,所以求余后其必然会得到相同的下标,那如何 存储了?有两个办法,一种是利用开放地址法,就是说后来相同的hashCode去找先来hashCode所在下标的相邻下标。说的有点绕口,举个例子,比 如<1,2>已经存在table数组的31的位置上了,再来一个<101,102>,其通过哈希后说:我也应该在31的位置上, 但是table说,你后来,你再在31附近找个空位安置下吧。当然,具体怎么找,有规则的。另外一种方式就是链地址法,还是拿以上的例子 说,<101,102>来到时,发现31的位置已经被占了,这时table说:<1,2>,你带 下<101,102>;其实就是要<1,2>把<101,102>的引用存储了。但是<1,2>说:我 怎么存储<101,102>的引用了,我没位置呀。所以table说:我给你们每个壳(entry类)吧,把你们都封装了;于是就有了entry类。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式