首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
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-21 19:42
武汉大学 Java
20260116【宇树科技】面试算法真题(共1题)
题目1:实现最大正向匹配分词算法
查看1道真题和解析
点赞
评论
收藏
分享
01-22 03:18
西安电子科技大学 Java
27届腾讯一面
📍面试公司:腾讯🕐面试时间:2026.01.21❓面试问题:实习项目介绍负责工作介绍豆瓣数据是如何抓取描述一下豆瓣的URL浏览器行为包含哪些爬虫时遇到的问题项目如何使用大模型进行纠错的SSE场景其他除了SSE选型Tika引擎介绍Selenium用什么驱动第二个实习介绍为什么用Mongo存储文件13题问了三遍为什么要写其中的一个自研项目Redission底层机制lua脚本如何保证原子性的这个环节是否用到锁如何保证锁的有效性RabbitMQ和Kafka的区别介绍其中的另外一个自研项目各个组件实现的功能举一个项目中设计的tools工具(大模型相关)为什么使用Postgresql举一个实际的用到数...
查看29道真题和解析
点赞
评论
收藏
分享
2025-12-12 21:37
哈尔滨工业大学 算法工程师
寒假实习简历求拷打
目前只学完了外卖和点评,八股一塌糊涂
Java和苟一桌:
哈✌🏻加大加粗😃
点赞
评论
收藏
分享
2025-12-02 23:29
腾讯云智研发_后台开发(准入职员工)
小米offer
小米offer了,北京大白菜,我服啦😂😂hr说我是排序靠前的
ccddfa:
排序靠前就当hr在放屁
牛客在线求职答疑中心
点赞
评论
收藏
分享
01-22 14:06
小天才_电子工程师(准入职员工)
腾讯内推,腾讯内推码
腾讯CSIG腾讯云后端二面面经面试时间:2025.10算法1. 编辑距离2. LRU实习介绍下实习中的困难,最后怎么解决的八股缓存穿透,缓存击穿,缓存雪崩分别是什么,如何解决Redis集群有哪几种Redis Cluster自动故障转移是怎么实现的,这个没答好了解一致性哈希吗HTTPS底层怎么实现的腾讯2027届可转正实习启动!无限复活甲,鹅厂不设限:1. 只要当前未在面试流程中,可随时切换岗位,投递无上限!2. 如3个工作日后意向部门未发起面试,全公司所有岗位/部门均可能向你发起面试,发起次数无上限!3. 同学可根据个人意愿拒绝面试,腾讯承诺,拒绝面试不会对你之后的面试机会产生任何影响!招聘岗...
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
6
15
分享
评论
提到的真题
返回内容
招聘动态
查看更多
牛客网申助</br>备战春招大杀器
27届寒假/转正实习汇总
全站热榜
更多
1
...
备战春招,网申一键填写工具,发布了!!!
2.6W
2
...
实习产出如何包装?
7805
3
...
【官方活动】牛客新春计划:给陌生人的一封信
6723
4
...
32岁程序员猝死,底薪3千要24h待岗
5641
5
...
27双非非科班4段实习从字节tt到腾讯wxg
5584
6
...
我爸对计算机行业的看法,是否准确?
4595
7
...
27届实习时间线
4284
8
...
专科工作一年后的心里话
3594
9
...
第一次被同事气笑了
2817
10
...
【牛客娘创作大赏】来生成牛客娘表情包,送牛币,送牛客娘周边
2792
创作者周榜
更多
正在热议
更多
#
哪些公司开春招了?
#
9578次浏览
115人参与
#
工作压力大怎么缓解
#
137349次浏览
1228人参与
#
上班以后,你还有哪些坚持的爱好?
#
6799次浏览
168人参与
#
找工作以来,你最看不惯__
#
13301次浏览
286人参与
#
你都在哪些场所面过试?
#
18882次浏览
218人参与
#
AI coding的好用工具分享
#
17258次浏览
359人参与
#
互联网公司评价
#
478217次浏览
4053人参与
#
实习怎么做才有更好的产出
#
11412次浏览
208人参与
#
实习教会我的事
#
51481次浏览
399人参与
#
你最近因为什么迷茫?
#
32982次浏览
468人参与
#
实习离职怎么跟领导说
#
75768次浏览
420人参与
#
实习生工资多少才算正常?
#
12095次浏览
190人参与
#
四大天坑是哪四家?
#
100076次浏览
234人参与
#
拼多多工作体验
#
44241次浏览
283人参与
#
机械制造面试记录
#
307814次浏览
3152人参与
#
你给AI提过哪些离谱的需求?
#
5649次浏览
159人参与
#
领导做过最不靠谱的事
#
12477次浏览
206人参与
#
工作一周年分享
#
49905次浏览
256人参与
#
为了实习逃课值吗?
#
61941次浏览
517人参与
#
聊聊你的被动加班经历
#
2005次浏览
41人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务