hashmap底层原理

hashmap是由数组+链表构成的,在数组里面嵌套了链表,链表使用的结构为头插法。链表里面可以放多个entry即key, value防止冲突。#Java工程师面试常考题##学习路径#
全部评论
https://zhuanlan.zhihu.com/p/76735726
2 回复 分享
发布于 2021-05-17 03:43
https://mp.weixin.qq.com/s/-xFSHf7Gz3FUcafTJUIGWQ
点赞 回复 分享
发布于 2021-05-17 03:42
第一:当length为2的N次方的时候,h & (length-1) = h % length 为什么&效率更高呢?因为位运算直接对内存数据进行操作,不需要转成十进制,所以位运算要比取模运算的效率更高 第二:当length为2的N次方的时候,数据分布均匀,减少冲突 此时我们基于第一个原因进行分析,此时hash策略为h & (length-1)。
点赞 回复 分享
发布于 2021-05-17 03:34
如果不是2的幂,会导致不均匀。只要是2的幂,并且保证hashcode是均匀分布的,那么得出的结果就是均匀的
点赞 回复 分享
发布于 2021-05-17 03:20
下面我们以值为“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
如何实现一个尽量均匀分布的Hash函数呢?我们通过利用Key的HashCode值来做某种运算。 位运算的方式实现:(Length是HashMap的长度): index = HashCode(Key) & (Length - 1)
点赞 回复 分享
发布于 2021-05-17 03:16
对于HashMap,我们最常使用的是两个方法:Get 和 Put。 1.Put方法的原理 调用Put方法的时候发生了什么呢? 比如调用 hashMap.put("apple", 0) ,插入一个Key为“apple"的元素。这时候我们需要利用一个哈希函数来确定Entry的插入位置(index): index = Hash(“apple”)
点赞 回复 分享
发布于 2021-05-17 03:14
hashmap的默认初始长度为16,每次自动扩展或者手动扩展时,长度必须是2的幂
点赞 回复 分享
发布于 2021-05-17 03:11
两个常用的方法:hashmap.put和get
点赞 回复 分享
发布于 2021-05-17 03:09

相关推荐

03-06 18:20
门头沟学院 Java
点赞 评论 收藏
分享
评论
6
15
分享

创作者周榜

更多
正在热议
更多
# 长得好看会提高面试通过率吗? #
3423次浏览 43人参与
# HR最不可信的一句话是__ #
1038次浏览 32人参与
# 巨人网络春招 #
11501次浏览 224人参与
# 春招至今,你的战绩如何? #
15286次浏览 141人参与
# AI面会问哪些问题? #
911次浏览 22人参与
# 你的实习产出是真实的还是包装的? #
2862次浏览 52人参与
# 米连集团26产品管培生项目 #
7185次浏览 224人参与
# 沪漂/北漂你觉得哪个更苦? #
1361次浏览 40人参与
# 你做过最难的笔试是哪家公司 #
1161次浏览 20人参与
# AI时代,哪个岗位还有“活路” #
2736次浏览 50人参与
# XX请雇我工作 #
51149次浏览 171人参与
# 军工所铁饭碗 vs 互联网高薪资,你会选谁 #
7982次浏览 43人参与
# 简历第一个项目做什么 #
32109次浏览 359人参与
# 简历中的项目经历要怎么写? #
310971次浏览 4261人参与
# 不考虑薪资和职业,你最想做什么工作呢? #
152854次浏览 889人参与
# 当下环境,你会继续卷互联网,还是看其他行业机会 #
187566次浏览 1123人参与
# AI时代,哪些岗位最容易被淘汰 #
64610次浏览 870人参与
# 如果重来一次你还会读研吗 #
229990次浏览 2011人参与
# 投格力的你,拿到offer了吗? #
178284次浏览 891人参与
# 你怎么看待AI面试 #
180699次浏览 1298人参与
# 正在春招的你,也参与了去年秋招吗? #
364256次浏览 2641人参与
# 腾讯音乐求职进展汇总 #
160831次浏览 1114人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务