首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
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
暂无评论,快来抢首评~
相关推荐
01-05 16:02
CVTE_web后台开发工程师(准入职员工)
CVTE内推,CVTE内推码
CVTE面经分享记录,摘自优秀牛油4月投的驱动开发实习,现在给我面试...也算是第一个面试了,感觉有些不是常规八股。1.内核是如何启动驱动的2.内核是如何与用户层进行交互,(回答比如说系统调用,共享内存),举一个系统调用的例子,(回答read),具体是 怎么实现的,系统调用是怎么进入内核的,最终调用的是内核的什么接口。3.I2c和spi的优劣,分别几根线,作用4.Uart波特率有哪些,项目中串口传输(也可能是指I2C)的数据包是什么格式的,怎么确保不丢包,怎么确定接收到的 就是想要的数据5.Main函数和中断中如果都用到了同一个函数,有什么值得注意的,如果都用到一个全局变量那6.使...
点赞
评论
收藏
分享
昨天 16:56
西安电子科技大学 Java
小米一面,我挂了
上周五,晚上六点,参加了小米一面,整体时长1.5个小时,算是比较长的吧面试官看起来比较年轻,刚开始自己的心态也挺轻松,随着面试的进展,心情变的越加的不对劲,怎么问的每一道题都只知道一点,这是知道了自己的打法,专门来拆台来了 (让我自己认识到自己真不专业,基础太差)问题的答案,我都用一个链接的形式来呈现,相对简单的会做出解释px em rem vw vh 分别解释一下这几个单位www.jianshu.com/p/82f02af17…padding-top, 10%, 10rem,10vh, 10em 取值逻辑是什么这个里面有个坑 就是10% ,取的是父容器的宽度的10%em 也有个坑,不一定取的...
查看23道真题和解析
点赞
评论
收藏
分享
2025-11-11 16:40
已编辑
门头沟学院 人工智能
真让我遇到了,笑了
之前以为这种情况都是网上开玩笑的,现在真让我遇到了
不知道怎么取名字_:
这个有点不合理了,相当于已经毕业了,但还是没转正,这不就是白嫖
点赞
评论
收藏
分享
今天 14:26
门头沟学院 机械设计/制造
写论文的崩溃时刻
由于实习下完班感觉累累的就不想再去看文献什么的,致使我的外文翻译超过限定日期十来天才提交,其实是拖延症导致的,在整理翻译的过程中发现,这玩意真折磨人呐,虽然大体都是用Ai翻译的,但里面有些用词翻译的不太准确,得一个一个去检查修正,除此之外还要排版格式,图片,表格,公式,最要命的是公式,有很多个希腊字母的符号,laplace变换,傅里叶变换......今天总算是整理完并提交了,下一个进展就是要开始整文献综述了,也是有点小 头疼......
写论文的崩溃时刻
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
6
15
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
双非非科班2年时间的转码历程
1.2W
2
...
秋招50+场面试手撕算法汇总
1.2W
3
...
批判“上岸即胜利”的炫耀
9413
4
...
简历挂麻了?因为你的简历只有“宽度”没有“深度”!
4706
5
...
Caffeine 面经汇总
3556
6
...
小鹏汽车二面(没绷住)
2538
7
...
写论文麻了
2230
8
...
2025年牛客年度作者礼盒开箱(礼盒部分)
1891
9
...
产品自用的prompt
1428
10
...
wxg以后不招前端了?
1205
创作者周榜
更多
正在热议
更多
#
哪些公司在招寒假实习?
#
15225次浏览
192人参与
#
国企vs私企,你更想去?
#
305648次浏览
2491人参与
#
MiniMax求职进展汇总
#
738次浏览
23人参与
#
26年哪些行业会变好/更差
#
18580次浏览
254人参与
#
卷__卷不过你们,只能卷__了
#
11614次浏览
262人参与
#
去年的flag与今年的小目标
#
9785次浏览
193人参与
#
写论文的崩溃时刻
#
6215次浏览
146人参与
#
关于春招你都做了哪些准备?
#
122157次浏览
707人参与
#
机械人,你最希望上岸的公司是?
#
198045次浏览
1917人参与
#
现在还是0offer,延毕还是备考
#
1256323次浏览
7922人参与
#
有深度的简历长什么样?
#
16340次浏览
339人参与
#
你不能接受的企业文化有哪些
#
11577次浏览
168人参与
#
入职第一天
#
10005次浏览
219人参与
#
租房前辈的忠告
#
350448次浏览
7445人参与
#
你都用AI做什么
#
6725次浏览
155人参与
#
你怎么看待AI面试
#
133400次浏览
745人参与
#
发工资后,你做的第一件事是什么
#
93108次浏览
311人参与
#
最难的技术面是哪家公司?
#
62962次浏览
949人参与
#
腾讯音乐求职进展汇总
#
147868次浏览
1052人参与
#
华为池子有多大
#
159120次浏览
876人参与
#
一人分享一道面试手撕题
#
22432次浏览
795人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务