首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
AI 模拟面试
简历
求职
学习
基础学习课
实战项目课
求职辅导课
专栏&文章
竞赛
我要招人
发布职位
发布职位、邀约牛人
更多企业解决方案
AI面试、笔试、校招、雇品
HR免费试用AI面试
最新面试提效必备
登录
/
注册
蜗牛20191023145836
2021-05-17 03:08
四川大学 Java
关注
已关注
取消关注
hashmap底层原理
hashmap是由数组+链表构成的,在数组里面嵌套了链表,链表使用的结构为头插法。链表里面可以放多个entry即key, value防止冲突。
#Java工程师面试常考题#
#学习路径#
提示
全部评论
推荐
最新
楼层
蜗牛20191023145836
楼主
四川大学 Java
https://zhuanlan.zhihu.com/p/76735726
2
回复
分享
发布于 2021-05-17 03:43
蜗牛20191023145836
楼主
四川大学 Java
https://mp.weixin.qq.com/s/-xFSHf7Gz3FUcafTJUIGWQ
点赞
回复
分享
发布于 2021-05-17 03:42
蜗牛20191023145836
楼主
四川大学 Java
第一:当length为2的N次方的时候,h & (length-1) = h % length 为什么&效率更高呢?因为位运算直接对内存数据进行操作,不需要转成十进制,所以位运算要比取模运算的效率更高 第二:当length为2的N次方的时候,数据分布均匀,减少冲突 此时我们基于第一个原因进行分析,此时hash策略为h & (length-1)。
点赞
回复
分享
发布于 2021-05-17 03:34
蜗牛20191023145836
楼主
四川大学 Java
如果不是2的幂,会导致不均匀。只要是2的幂,并且保证hashcode是均匀分布的,那么得出的结果就是均匀的
点赞
回复
分享
发布于 2021-05-17 03:20
蜗牛20191023145836
楼主
四川大学 Java
下面我们以值为“book”的Key来演示整个过程: 1.计算book的hashcode,结果为十进制的3029737,二进制的101110001110101110 1001。 2.假定HashMap长度是默认的16,计算Length-1的结果为十进制的15,二进制的1111。 3.把以上两个结果做与运算,101110001110101110 1001 & 1111 = 1001,十进制是9,所以 index=9。 可以说,Hash算法最终得到的index结果,完全取决于Key的Hashcode值的最后几位。
点赞
回复
分享
发布于 2021-05-17 03:18
蜗牛20191023145836
楼主
四川大学 Java
如何实现一个尽量均匀分布的Hash函数呢?我们通过利用Key的HashCode值来做某种运算。 位运算的方式实现:(Length是HashMap的长度): index = HashCode(Key) & (Length - 1)
点赞
回复
分享
发布于 2021-05-17 03:16
蜗牛20191023145836
楼主
四川大学 Java
对于HashMap,我们最常使用的是两个方法:Get 和 Put。 1.Put方法的原理 调用Put方法的时候发生了什么呢? 比如调用 hashMap.put("apple", 0) ,插入一个Key为“apple"的元素。这时候我们需要利用一个哈希函数来确定Entry的插入位置(index): index = Hash(“apple”)
点赞
回复
分享
发布于 2021-05-17 03:14
蜗牛20191023145836
楼主
四川大学 Java
hashmap的默认初始长度为16,每次自动扩展或者手动扩展时,长度必须是2的幂
点赞
回复
分享
发布于 2021-05-17 03:11
蜗牛20191023145836
楼主
四川大学 Java
两个常用的方法:hashmap.put和get
点赞
回复
分享
发布于 2021-05-17 03:09
暂无评论,快来抢首评~
相关推荐
07-03 18:08
National University of Singapore 运营
拒offer时hr很生气怎么办
uu们,拒offer时hr很生气怎么办我哭死
爱睡觉的冰箱哥:
人家回收你的offer,或者oc后没给你发offer的时候可不会愧疚你,所以你拒了也没必要愧疚他。
点赞
评论
收藏
分享
07-02 18:09
门头沟学院 Java
苍穹外卖和谷粒商城这俩是不是烂大街了,还能做吗?
苍穹外卖和谷粒商城这俩是不是烂大街了,还能做吗?
想去重庆的鸽子在吐槽:
你不如把这俩做完自己搞明白再优化点再来问 何必贩卖焦虑
点赞
评论
收藏
分享
05-12 16:04
已编辑
江西财经大学 Java
我终于懂什么叫点击就送了
神州信息,上周五面了十几分钟,答得一坨,这都几把发offer了
还在摆烂:
简历初筛都不给过
点赞
评论
收藏
分享
06-23 11:28
门头沟学院 Java
这一块儿/.
这一块儿/.
牛客91966197...:
也有可能是点拒绝的时候自动弹的话术
点赞
评论
收藏
分享
不愿透露姓名的神秘牛友
07-01 17:19
硕士学历真就那么重要吗
25届211本,本科摆烂,考研失利,春招去了华子,家里对我没有继续读书很反感,唯硕士论,认为我五年后就会为我没有读硕士而感到吃亏。甚至提出让我毁约去二战的说法。。,我实在难以理解,大家家里都这样吗?
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
6
15
分享
评论
提到的真题
返回内容
招聘动态
查看更多
现代汽车前瞻技术研发中心
京东TET
全站热榜
更多
1
...
友友们如何看待这个问题
6036
2
...
腾讯csig暑期一二三面
5906
3
...
我举报了室友面试作弊
4493
4
...
秋招打算走后端和agent开发,简历求批
3980
5
...
加班到十点,连续加班两个星期,这是实习生的强度吗?
3868
6
...
简历很差吗?
3814
7
...
腾讯云智后台开发暑期面经
3762
8
...
累了,和自己和解了
3393
9
...
不理解,为啥大家觉得不该举报面试作弊啊?
3051
10
...
实习期间女mt这么说我该怎么回...
3014
创作者周榜
更多
正在热议
更多
#
百度工作体验
#
224501次浏览
1983人参与
#
机械人与华为的爱恨情仇
#
117361次浏览
946人参与
#
现代汽车前瞻技术研发急速编程挑战赛
#
28631次浏览
221人参与
#
你觉得实习能学到东西吗
#
37466次浏览
732人参与
#
发工资后,你做的第一件事是什么
#
68316次浏览
229人参与
#
金融财会交流会
#
110157次浏览
380人参与
#
秋招什么时候开投比较合适?
#
25295次浏览
326人参与
#
如何准备秋招
#
21341次浏览
401人参与
#
工作中哪个瞬间让你想离职
#
26035次浏览
177人参与
#
正在实习的你,几点下班
#
169642次浏览
1170人参与
#
产品每日一题
#
46942次浏览
575人参与
#
机械人集合!你是什么工程师?
#
15970次浏览
89人参与
#
你们公司几号发工资
#
21547次浏览
143人参与
#
CVTE求职进展汇总
#
15965次浏览
292人参与
#
硬件应届生薪资是否普遍偏低?
#
74222次浏览
514人参与
#
工作中,努力重要还是选择重要?
#
134925次浏览
1660人参与
#
机械人的offer怎么选
#
147052次浏览
801人参与
#
每个月的工资都是怎么分配的?
#
31284次浏览
451人参与
#
实习,不懂就问
#
47264次浏览
704人参与
#
我想去国央企的原因
#
60196次浏览
393人参与
#
不考虑转正,实习多久合适
#
32514次浏览
147人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务