范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

HashMap每次扩容时,为什么都必须是2的N次方?

  最近有粉丝问壹哥,为什么HashMap每次扩容时,都必须是2的N次方?
  其实要想弄明白这个问题,我们就必须知道HashMap的底层源码结构。接下来壹哥就带各位来分析一下HashMap的底层设计。
  我们知道,HashMap的底层是通过数组+链表+红黑树的数据结构来存放数据的。当新添加元素的key值出现了hash碰撞,就会在同一 个 bucket中形成链表或者红黑树 。 当键值对的数量超过阈值时就会扩容,将以前处于同一个链表或者红黑树上的元素打散,在新数组的 bucket 上进行重新分布。
  当HashMap在初始化没有指定容量的情况下,首次添加元素时,数组的容量为16;当超出阈值,数组容量为扩容为之前的2倍。
  那么问题来了,为什么HashMap会将首次初始化容量设置为16,而后续每次扩容都是之前的2倍?而不是像ArrayList首次为10,后续为1.5倍呢?这可是我们在面试时的一个高频考点哦!壹哥提醒各位,一定要搞清楚这一点哦。对应源码分析
  其实要想回答出上面提出的问题,我们可以从HashMap的源码里找到答案,如下图所示:
  其中 n 为数组的长度,n - 1 为数组的最大索引值 。 (n - 1)& hash 的意思是将每个元素key的hash值 , 与最大索引值进行相与 操作。 然后判断对应的 bucket 位置是否有元素,如果没有元素则在对应的 bucket 位置直接添加;如果有元素,则形成链表或者红黑树。深入分析
  各位看官,你现在可能对上面的内容还是有点云里雾里,别急,让我们再来看一组数据:
  长度
  最大索引
  二进制数
  16
  15
  1111
  32
  31
  11111
  64
  63
  111111
  当数组初始长度为16的时候,每次扩容都为之前的2倍,那么就保证了每次扩容之后新数组的最大索引值对应的二进制数为全1 。 根据2.1小节中,图片标识的 (n - 1) & hash,那么就能保证添加到HashMap中key的hash值与最大索引相与时,能够最大化的分散到HashMap所有的 bucket 中,进而最大化避免出现 hash碰撞而形成链表或者红黑树。   壹哥再反向地跟各位看官论证一下。假如说 HashMap的初始化长度是10,那么最大索引值为9,而9对应的二进制数是 1001。那么key的hash值与 9相与,结果只可能为 0、1、8、9,那么新增的数据永远只能放到数组索引为 0、1、8、9这四个位置,这就大大增加了出现链表和红黑树转换的概率。   所以初始化为16,每次扩容是之前的2倍,这就大大降低了链表和红黑树转换的概率,自然也就提高了HashMap的性能。 现在你明白了吗?   作者:一一哥Sun   链接:https://juejin.cn/post/7177982041089605693

2023年,要做时代觉醒者才能成为这个时代的崛起者!觉醒是一个人改变的开始,人生最终的价值在于觉醒和思考能力,而不只是在于生存。人觉醒后人一旦开悟,灵魂一旦觉醒,你就再也不可能陷入到,从前的那种愚昧无知的状态中了。互联网之上的追梦人反击一个人,最有水平的方式如果有人欺负你蓄意伤害你诽谤你,你应该忍气吞声,还是与之对抗?当你拿出拳头找人对抗时,你会发现,打了别人,自己的手也会很痛。如果别人强如磐石,你的手一准会受伤。什么事情,都忍着吗?人这辈子是来还债的,把这些债还完,人间就没价值了有禅师说过,若无亏欠,怎会相见。若无缘分,何必相遇。所有的遇见,都跟缘分以及亏欠有关。不是我们亏欠了别人,就是别人亏欠了我们,反正每个人都在缘分网络当中,活过这一生。谈到亏欠,就不人民日报的金句你最喜欢哪一句?1。朝暮与年岁并往,热爱与平淡共存2。纵有狂风拔地起,我亦乘风破万里。3。千川汇海阔,风正好扬帆。4。总有人间一两风,填我十万八千梦。5。乘风好去,长空万里,直下看山河。6。明月有宿相思我以春风寄相思梦里采回相思人谁知春风寒意冷一缕惊醒梦中人奈何相思无人知佳人不知何处寻就此作罢在吾心不念相思只念情2023。02。03一宿的梦,太真实,太难受,赋一首不知是这春风太醉跟着张颂文游海南,发现了超多宝藏地如果说最近的高频高热词,狂飙一定在榜!在精彩刺激的剧情之外,其中主演之一张颂文的微博引起了海南人民的注意。走街串巷,寻觅美食,感受当地人文,随手记录的见闻配上几张图片或视频,满满的红旅精品红色资源是中国共产党艰辛而辉煌奋斗历程的见证,是新时代中国共产党人的精神力量源泉。红色土地,热血浸染红色血脉,永续相传。回首百年光辉路,砥砺奋进新征程,文化和旅游部推出建党百年红色文旅中国丨穿越到柳宗元笔下的千年古街描绘汉唐名郡诗意山水画卷载千年永州厚重的悠悠岁月不夜之城柳子街,因唐宋八大家之一柳宗元闻名于世,这里所潜藏的艺术滋养和文脉搏动几千年来丰富强劲。从潇湘名郡到零陵古城,高度融合的市井1983年旅行结婚,海陆空通关,是一种什么体验讲述王福庆结婚是人一辈子最重大的仪式之一,人们总希望能够别出心裁,留下深刻的记忆。我是1983年结婚的,当时旅行结婚特别流行。我们的结婚典礼日是1983年10月16日。中午,在迎泽人流后月经少?多是胞宫受损,肾气不足了!补肾养血月经恢复正常人流后中远期并发症逐渐增多,比如月经过少闭经宫腔粘连及继发不孕,其中,月经过少,在远期并发症中蕞常见,占57以上,今天来说一说它。诸病源候论妇人妊娠病诸候曰无非气血损伤之故,气虚则明天立春,养肝是重点!建议多吃5种天然养肝菜,安稳过春俗话说肝火一烧,百病难熬,人体中的器官脏腑都与季节相对应,而春天是养肝黄金期,因为春天在五行中属木,肝脏在人体五脏中也属木,所以春天具有通肝的作用,立春前后就要抓紧时间养肝护肝了。
观点美团王兴BBA要被理蔚华取代,中国车企一定会赢文懂车帝原创刘艺伟懂车帝原创行业日前,美团CEO王兴转发理想汽车9月交付过万成绩单,并发表了自己对国内造车新势力的看法未来三年内,理想蔚来华为将取代BBA,占领高端车市场。BBA要国外的娱乐圈也在审美降级呀?这是67年前(1955年)拍的茜茜公主这是(2011年)拍的茜茜公主不止我们在审美降级呀。老版的茜茜公主里面的裙子,套套剪裁和搭配,都看得出下了心思的。橘色与白色的配色,这种宝藏配时装周上竟然现做衣服?你见过喷出来的裙子吗?全球顶流超模BellaHadid压轴亮相Coperni2023春夏秀场。诞生了前所未有的一件高科技礼服,是现场喷绘在身体上之后再剪裁出来的,喷枪中含有棉和合成纤维的混合物液体,满满刘亦菲的10张美图,每张都是珍藏款1。其实我没有拖延症,快递一拿到我就会拆,闹钟一响我就会按,零食一开我就会吃,你一出现我就会笑。2。我今天吃药了,吃的是什么药?你最最最重要!3。我喜欢生命只有单纯的盼望,只有一种千禾酱油回应不添加防腐剂如何防腐靠盐三言财经10月2日消息,昨日,千禾酱油在其官方抖音账号中发视频回应网友关于酱油防腐等问题表示,千禾酱油不添加防腐剂,是靠盐防腐。千禾表示,公司是四川眉山本土企业,千禾名称源自苏东坡同一机型不同处理器,骁龙版旗舰手机影像体验更胜一筹拥有一款拍摄功能很好的骁龙手机是什么体验呢?有人说是一种非常不好的体验,因为聚会时朋友们总是用她的手机玩自拍,而自己都没机会玩自己的手机了。对于影像能力出众的骁龙系列手机来说,这样从威马落寞,看小米造车文郑开车谈擎说AI主编近日,威马创始人沈晖12亿年薪的消息在车圈引起轩然大波。随后,威马CEO沈晖疑似在朋友圈发文回应此事有些事情,脚趾头想想就知道真假,不值得花时间解释。似乎是在新造车最卷9月小鹏惨跌,理想破万,哪吒销冠深燃(shenrancaijing)原创作者崔泡泡编辑沐风国庆假期第一天,造车新势力9月交付数据如期而至。在刚刚过去的9月,造车新势力之间火药味渐浓,问界M5EV理想L8L7小鹏G上了岁数喝白酒,有这4点讲究,行家见了直说内行人啊有很多人都比较喜欢喝酒,这种状态能延续很久,就比如说之前采访过一个人,老年人,他自己就承认,他从十多岁的时候,就开始喝酒了,然后20多岁的时候,开始大量喝酒,30多岁的时候,因为工金羊网评逐梦苍穹三十载,问天探索再出发新时代成就巡礼9月21日是中国载人航天工程立项实施三十周年。1992年9月21日中国载人航天工程立项上马,发射场定在酒泉卫星发射中心。如今,三十而立的航天工程,奔赴星辰大海步伐矫健治好了我的强迫症,华为P60Pro概念图曝光随着智能手机的发展,只有掌握了核心技术的手机厂商才能更好的掌控自己的命运,而华为手机就是一家掌握了众多核心技术的手机厂商。大家都知道,华为手机拥有丰富的技术储备和丰富的研发经验,同