首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
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-13 09:12
网龙网络公司_场景原画设计师(准入职员工)
网龙内推网龙面经
10.24 秋招基本结束了,前两天接了个网龙最终测评,期待oc。秋招期间对我帮助最第二大的就是牛客上各位前辈的面经了(第一是女友,表白一下),于是也提键盘写一个,算是知恩图报,也算是攒攒人品求快点oc。bg:本硕985,软工出身。无实习,除了本科有游戏设计的课程之外毫无相关经验。计算机水平不行,但是脑袋还算灵光,加上由于很喜欢网龙的某款卡牌类游戏(名字大伙应该都知道),所以秋招开始目标就比较明确,就想去网龙!于是游戏公司的投简历策略是先投几个次一等想去的公司试水,隔几天再投网龙,最后留了几个大厂,想着网龙要是没上也还积累了经验,也算是给自己缓冲时间和学习时间。除此之外还投了一些大中厂(豚子,华...
点赞
评论
收藏
分享
11-02 18:33
山东大学 Java
求求牛友们解答下 先出去干几年 再回老家
本硕985,java选手,想最终在山东定居,目前很是纠结不知道先去阿里(某n)干几年,再回山东找个班上难不难?工资我知道肯定是要降低很多的(但是也想知道山东济南青岛社招java的一个平均工资)在接受薪资降低的情况下,到底好不好回来?社招容不容易拿到offer?(无背景无关系)还有就是推荐多少岁之前回来?求求懂点的牛友们指点指点!
投递阿里巴巴等公司10个岗位
点赞
评论
收藏
分享
10-30 15:54
山东大学 Java
帮同学发 众阳健康面经
1.mybatis一级缓存和二级缓存2.jvm的内存回收策略3.JAVA程序在jvm的加载过程4.然后mysql三种数据类型的索引各适用什么场景5.一个服务器就是因为这个JAVA程序因为某个因为某个原因导致了这个就是内存溢出了,然后怎么去判断这个排查这个错误6.数据库的隔离级别7.怎么对一个SQL语句进行分析 8.如果一个单点数据库宕机了,你有哪些策略去预防这个情况的发生9.主从复制介绍一下,然后还问主从复制是靠来保证数据一致性的10.mysql是基于磁盘操作的,那么速度比较慢,你怎么去优化一下来减少这种磁盘操作作为济南黑名单榜前三的公司好像并没有什么自知之明,一面是在工作日晚上七点,二面是在周六,就差把加班写我脸上了,公司主页也写了交付快,8个人7天34个系统,活不活了,不好评价,反正我肯定没兴趣
查看10道真题和解析
点赞
评论
收藏
分享
11-03 00:38
已编辑
门头沟学院 算法工程师
济南18k vs 北京25k,极限二选一
投票
北京某B轮机器人公司
算法岗
25k
点赞
评论
收藏
分享
11-12 19:26
齐鲁工业大学 自动化
擎方科技(济南)有限公司能去吗
擎方科技(济南)有限公司
AMHS自动化工程师
综合薪资 7-8(含福利补贴五险一金都包括了),底薪8000,夜班九千多
点赞
评论
收藏
分享
点赞成功,聊一聊 >
6
15
评论
分享
回复帖子
提到的真题
返回内容
招聘动态
查看更多
字节跳动
2025校园招聘
阿里云管培生
2025届校园招聘
快手Star
2025届招聘
快手
销售类投递专区
全站热榜
1
...
爱信等
7292
2
...
秋招圆满结束
5427
3
...
11.25校招&实习招聘信息汇总
5391
4
...
阿里云VS腾讯VS华为,决赛圈
5097
5
...
真心觉得25届的求职之路太艰难了
4792
6
...
阿里云管培生开奖了
4382
7
...
总结一下鼠鼠找实习的历程
4204
8
...
offer比较的一些建议:互联网、银行、金融科技、国企、央企
4062
9
...
放弃代码,结束秋招啦!
3111
10
...
重生之我变成了小学生
3030
正在热议
#
25届秋招总结
#
301505次浏览
2669人参与
#
如果不工作真的会快乐吗
#
59351次浏览
517人参与
#
阿里云管培生offer
#
17530次浏览
295人参与
#
地方国企笔面经互助
#
3836次浏览
10人参与
#
美团求职进展汇总
#
1327544次浏览
12449人参与
#
选完offer后,你后悔学本专业吗
#
20041次浏览
144人参与
#
百度开奖
#
162904次浏览
977人参与
#
正在实习的你,几点下班
#
52011次浏览
389人参与
#
国央企薪资爆料
#
8434次浏览
68人参与
#
如何一边实习一边秋招
#
992240次浏览
12638人参与
#
提前批简历挂麻了怎么办
#
146493次浏览
1948人参与
#
学历or实习经历,哪个更重要
#
51129次浏览
402人参与
#
海康威视求职进展汇总
#
398893次浏览
3406人参与
#
米哈游求职进展汇总
#
175954次浏览
1458人参与
#
求职遇到的搞笑事件
#
70843次浏览
577人参与
#
投递实习岗位前的准备
#
1179424次浏览
18397人参与
#
面试体验感最好的是哪家?
#
85100次浏览
846人参与
#
实习生应该准时下班吗
#
167441次浏览
1159人参与
#
得物求职进展汇总
#
66275次浏览
682人参与
#
网申一定要掌握的小技巧
#
5338次浏览
53人参与
#
招聘要求与实际实习内容不符怎么办
#
10285次浏览
273人参与
#
0offer是寒冬太冷还是我太菜
#
898475次浏览
8013人参与
牛客网
牛客企业服务