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

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年伊始,泰山景区玉泉寺管理区二次创业再下新城,接连承揽潍坊市沂山区域国土绿化试点示范项目和临沂市沂南退化林修复2个施工项目,项目承包施工费用总计200余万元,预计实现利税2瑰谷农业综合体项目落地吴中横泾农工商文体旅六维融合助推乡村振兴昨天(2月8日),瑰谷农业综合体项目签约仪式在吴中区横泾街道举行,项目达产后,将形成亿元规模营收千万规模税收百万规模租金数百本地就业,成为横泾乡村振兴示范引领的龙头项目,助力谱写天黑龙江省第八届残疾人运动会冬季项目9日开赛原标题黑龙江省第八届残疾人运动会冬季项目9日开赛东北网2月9日讯(记者杨帆)9日,黑龙江省第八届残运会冬季项目在哈尔滨开赛,为进一步推动龙江残疾人冬季体育运动普及开展,本届赛会首次秦朝的强盛统一和快速毁灭,源自对于平民的态度秦朝作为第一个统一的王朝,在中国历史上有着至关重要的地位。秦始皇的挥斥方遒,纵横家的穿针引线,百家争鸣的思想碰撞,金戈铁马的肃杀豪迈。当齐王建被俘,战国时代落下帷幕,一个强大的王朝招远市盛世制造基地项目实现智能手机招远造来源烟台日报大小新闻项目是驱动发展的引擎改变面貌的基石。新春伊始,在火热的金都大地,一个个重点项目落地开花一批批新兴产业崛起发力,让人直观感受到招远市跃马扬鞭加力提速推动产业体系全4月30日截止报名,中国政府来华留学卓越奖学金项目简章来了!中国政府来华留学卓越奖学金项目简章YouthofExcellenceSchemeofChinaProgramChineseGovernmentScholarship一项目简介Int就地解决旅游纠纷!景区移动法庭值得推广据海南日报报道,一条横幅一条长桌一条长凳在海南省三亚市南山文化旅游区天涯海角游览区蜈支洲岛旅游区等景区里,每到旅游旺季,简易的三条法庭便会为游客提供流动式法律服务,就地解游愁。三条团结片区开发10年仅建成一个项目,昆明后花园10亿投资搞基建自称昆明后花园的片区有好几个,比如太平新城富民等,其中西山区团结街道(即以前的团结乡)可能是最不起眼的那个,主要原因还在于开发滞后,既不像太平拥有已成规模的住宅地产开发,也没有富民超实用早春通勤穿搭!20套照着穿美到爆!头条创作挑战赛最近很多店铺的春装都出来了,为了让你们能第一时间换上漂亮衣服,提前把早春穿搭给你们安排好啦!今天就先种草一波漂亮外套,件件百搭又实穿,话不多说,赶紧看下去吧我最近真的
全球连线亚洲花都看中国消费加速回暖视频加载中位于滇池东岸的斗南花卉市场,素有亚洲花都之称,是亚洲最大的鲜切花交易市场,被誉为中国花卉的市场风向标和价格晴雨表。鲜切花从这里通过航空冷链运输等方式销往国内各地及日本泰国全面客观辩证看待中国经济与世界经济中国发展改革报社记者张洽棠近日,多个国际组织发布全球经济展望报告,对全球经济复苏大多持非乐观态度。与此形成鲜明对比的是,中国因时因势优化调整疫情防控政策,不仅进一步提升自身经济增长中国驻泰国使馆发布中国公民赴泰旅游安全提示随着中国公民赴泰国团组旅游试点恢复,近期将有不少同胞来泰旅游观光。为确保您和家人在泰旅行安全健康,中国驻泰国大使馆温馨提醒如下一行前功课要做足,在泰旅游心不慌出行前请了解泰最新入境2023中国现代饮食发展指数71。2国人最不放心的食品蔬菜速冻食品熟肉制品中国小康网独家专稿文小康中国小康网记者刘彦华民以食为天,食以安为先。2023中国现代饮食发展指数调查显示,面对目前的食品安全情况,29。1的受访者不满意,45。2的受访者评价一般,非遗出海知味中国老陈醋视频加载中人们一提起山西就会想到老陈醋。山西老陈醋以高粱豌豆大麦谷糠麸皮为原料,以含有多种微生物菌种的红心大曲作酵母,历经蒸酵熏淋陈工序的精心酿造,再经过一年冬捞冰夏伏晒的陈酿,方新华视点黑土地上备耕忙为提升粮食稳定供应能力,给今年丰收打下坚实基础,近期,黑龙江省各地抢前抓早备春耕,育种研发检修农机清雪扣棚,多种举措以早动争主动,奏响春耕序曲。好种出好苗。在北大荒垦丰种业股份有限小池璜溪花开成海,一路狂飙奔赴春天暖风徐徐,樱花浪漫2023年的粉色浪漫已经在小池璜溪的山野间悄悄地绽放不负花漾一起到樱花树下赴一场浪漫之约吧在这里随手抓起一束风,便是一整个春天樱花的花语爱与希望2022年的起起伏用自己的视角记录美好,摄影师拍摄大连,依山傍海山河大美地处辽东半岛南端的大连,依山傍海,风光壮丽,有秀美的山川,蜿蜒的海岸线,以及繁忙的港口和璀璨的城市,可谓我国北方海滨的一颗明珠。我大学毕业后一直在大连工作生活,所以我的大部分作品都运营是一个乡村的灵魂,他让美丽乡村有风景,更有钱景眼下,乡村旅游成为炙手可热的词汇,似乎动动嘴皮子,游客就能趋之若鹜。事实上呢?当我们投入了大量的人力物力财力,当荒芜的乡村蝶变成了美丽乡村,一厢情愿地捧着鲜花准备迎客时,却不幸沦为内蒙古阿荣旗大棚樱桃花开早盎然春意满枝头央广网呼伦贝尔2月14日消息(记者王秋蕾通讯员赵晶晶)早春二月,乍暖还寒。位于内蒙古呼伦贝尔市阿荣旗霍尔奇镇莫尔顶村的甜樱生态采摘园里,樱桃花已开满枝头,散发出阵阵幽香,带来春的气福建晋江深沪湾海底古森林遗迹国家级自然保护区科技助力守护海底古森林(美丽中国走近海洋保护区)来源人民日报保护区美景。陈庆煌摄(人民视觉)保护区的古牡蛎礁。赵敏摄(影像中国)国家一级重点保护野生动物勺嘴鹬在深沪湾滩涂一带栖息觅食。新华社记者魏培全摄核心阅读作为我国唯一以海底