欢迎光临散文网 会员登陆 & 注册

被面试官狂问HashMap:回家直接肝了这套HashMap底层原理源码教程,受益

2023-03-04 18:29 作者:火柴i  | 我要投稿

看完啦,收获很大!

这是笔记:



HashMap底层原理:

数组+链表(数组指向链表头结点)

头插法:新put的节点从头部插入

新节点.next = 头节点

头节点 = 新节点


HashMap的put:

计算key的hash值

先将hash值进行扰动(移动位)

接着计算出最小2次幂(如10为16)

然后把计算出的结果和key扰动过的hash值进行位于&运算,最后得出要插入的index位

若index位上节点不为null,则遍历判断是否有重复key,有的话覆盖value值,返回原value(对应视频开头的2)


扩容机制:

新建一个Entry数组,容量是原来size*2,接着调用transfer方法进行转移

转移原数组的节点该放在新数组哪个位置:通过计算可以得出放在原来位置或者*2位,原数组从头开始遍历转移(1:1、2:2、3:3)转移到新数组变成(3:3、2:2、1:1)


被面试官狂问HashMap:回家直接肝了这套HashMap底层原理源码教程,受益的评论 (共 条)

分享到微博请遵守国家法律