首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
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
两个常用的方法:hashmap.put和get
点赞
回复
分享
发布于 2021-05-17 03:09
蜗牛20191023145836
楼主
四川大学 Java
hashmap的默认初始长度为16,每次自动扩展或者手动扩展时,长度必须是2的幂
点赞
回复
分享
发布于 2021-05-17 03:11
蜗牛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
如何实现一个尽量均匀分布的Hash函数呢?我们通过利用Key的HashCode值来做某种运算。 位运算的方式实现:(Length是HashMap的长度): index = HashCode(Key) & (Length - 1)
点赞
回复
分享
发布于 2021-05-17 03:16
蜗牛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
如果不是2的幂,会导致不均匀。只要是2的幂,并且保证hashcode是均匀分布的,那么得出的结果就是均匀的
点赞
回复
分享
发布于 2021-05-17 03:20
蜗牛20191023145836
楼主
四川大学 Java
第一:当length为2的N次方的时候,h & (length-1) = h % length 为什么&效率更高呢?因为位运算直接对内存数据进行操作,不需要转成十进制,所以位运算要比取模运算的效率更高 第二:当length为2的N次方的时候,数据分布均匀,减少冲突 此时我们基于第一个原因进行分析,此时hash策略为h & (length-1)。
点赞
回复
分享
发布于 2021-05-17 03:34
蜗牛20191023145836
楼主
四川大学 Java
https://mp.weixin.qq.com/s/-xFSHf7Gz3FUcafTJUIGWQ
点赞
回复
分享
发布于 2021-05-17 03:42
还没有回复哦~
相关推荐
11-27 10:51
东南大学 单片机
听学长的没错
拿到了2个offer,分别是携程的后端和阿里云的管培生,本来比较犹豫,跟就业办的老师聊了之后豁然开朗,他说阿里云管培生是非常难得的校招生培养项目,算是技术复合型人才的黄埔军校是非常适合技术复合型人才的职业发展第一站,不仅可以带薪培训1年,系统学习云计算产品与技术知识,还能接触到阿里云顶级的行业资源,接触业务和商业知识,挺适合我这种对技术商业化更感兴趣的人,而且有同专业的学长也在这个项目里,说不定还能有个饭搭子跟着前辈学,经验成长肯定快!就不纠结了,直接接了这个阿里云管培生offer,希望未来发展顺利!早日成为大佬哈哈
Java抽象带篮子:
要我就选携程了,技术人一开始就走技术岗好一些
点赞
评论
收藏
分享
11-25 00:34
华东理工大学 硬件开发
拿到小米的offer了!秋招结束了!
小米的录用通知书让我很激动,经过严格的筛选和考核,我的教育背景、实习经历和面试表现都得到了认可,终于从众多候选人中脱颖而出。希望大家也能早日拿到属于自己的offer!
牛客创作赏金赛
点赞
评论
收藏
分享
11-24 19:04
已编辑
湖南工商大学 Java
大三,普通一本,想实习,求建议
明年春招想找实习还有机会吗,怎么准备去丰富简历啊,我太想进步了,太想进大厂了
点赞
评论
收藏
分享
10-21 14:00
第一拖拉机制造厂拖拉机学院 嵌入式软件工程师
今年工作怎么这么难找啊
AFBUFYGRFHJLP:
直接去美帝试试看全奖phd吧
点赞
评论
收藏
分享
不愿透露姓名的神秘牛友
昨天 18:44
为什么有些人工作十年还不如一个职场新人?
最近感触很深,身边有很多同事已经工作近十年了,但是通过日常对接,可以非常明显的感受出工作能力上的差距,有时候甚至还不如一个刚来一年的校招生! 先说一个最显著的特征,就一个字:乱。 1️⃣做事方面: 1、极度混乱,没有主见,被分配任务之后手忙脚乱,完全不知道从哪下手何为主次,进入执行状态缓慢,有时候还要反复请示才敢走出第一步。 2、即便知道了如何去做,在做事的时候又是一片混乱,对很多事情没有掌控力,感觉需要费很大的力气才能达到一个至少不坏的结果。 3、 逻辑思维混乱是本质,上升到行为就是语言组织也很乱,说话前后没有因果关系,经常没头没脑的冒出一个结论,缺乏依据。 4、有的人总喜欢说一些重复的...
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
6
15
分享
评论
提到的真题
返回内容
招聘动态
查看更多
阿里云管培生
2025届校园招聘
富士通(西安)
2025校园招聘
全站热榜
1
...
校招两方/三方违约模板
1.8W
2
...
从露宿街头到百万级种子轮融资②——我的实习期都经历了什么
5893
3
...
秋招圆满结束!!
4466
4
...
【发帖有奖💰】爆料秋招开奖进展❗
2245
5
...
秋招结束!!!
2210
6
...
今年谨慎等华为
1905
7
...
大家怎么看待计算机的各个方向
1836
8
...
秋招也许结束了
1805
9
...
入职1年,胖了15斤是什么体验
1670
10
...
避雷浙江大应科技,恶人应该有恶报!!
1403
正在热议
#
拼多多求职进展汇总
#
237355次浏览
2039人参与
#
机械求职避坑tips
#
23646次浏览
249人参与
#
阿里云管培生offer
#
62602次浏览
1760人参与
#
25届秋招总结
#
411170次浏览
4128人参与
#
25届机械人为了秋招做了哪些准备?
#
26290次浏览
363人参与
#
地方国企笔面经互助
#
6961次浏览
17人参与
#
北方华创开奖
#
67087次浏览
553人参与
#
ai智能作图
#
29069次浏览
351人参与
#
虾皮求职进展汇总
#
91757次浏览
750人参与
#
实习,投递多份简历没人回复怎么办
#
2440804次浏览
34746人参与
#
软件开发投递记录
#
1481631次浏览
23947人参与
#
我的实习求职记录
#
6133507次浏览
84021人参与
#
我在牛爱网找对象
#
74895次浏览
555人参与
#
发工资后,你做的第一件事是什么
#
9152次浏览
43人参与
#
985本硕1个中小厂offer,摆烂or继续努力
#
83300次浏览
602人参与
#
机械人怎么评价今年的华为
#
157963次浏览
1352人参与
#
京东求职进展汇总
#
513077次浏览
4680人参与
#
如果可以,你希望哪个公司来捞你
#
33950次浏览
196人参与
#
你觉得通信/硬件有必要实习吗?
#
54798次浏览
698人参与
#
歌尔求职进展汇总
#
42908次浏览
294人参与
#
在职场上,你最讨厌什么样的同事
#
6086次浏览
91人参与
#
如果再来一次,你还会选择这个工作吗?
#
115836次浏览
1144人参与
牛客网
牛客企业服务