首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
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
暂无评论,快来抢首评~
相关推荐
11-20 23:54
深圳大学 测试开发
秋招总结,春招加油
huo12138:
校友,传奇耐面王
点赞
评论
收藏
分享
11-04 19:37
桂林电子科技大学 运维工程师
对不起,周深,我喜欢的是李维
一段实习经历+技术栈都符合,连实习岗位的offer都拿不到😭
面了100年面试不知...:
怎么,27届就不跑了?
点赞
评论
收藏
分享
09-24 18:30
已编辑
长春工业大学 产品经理
好HR+1
啥也不说了xdm,爱了👍👍👍
小肥罗:
HR就是好人的缩写哈哈哈哈
点赞
评论
收藏
分享
11-17 22:43
Université d’Auvergne-Clermont-Ferrand 1 C++
cpp c++面经分享
前言大家好,我是阿甘,“奔跑中cpp / c++”,知识星球的创始人今天给大家分享分享,我们星球同学一起整理的,同时也在不断更新的,cpp / c++相关岗位面经。全网最全收集面经分享因面经过多,今天只分享部分,后续有时间继续分享(让大家学习/ 面试形成一个参考)字节客户端一面C++智能指针有哪些,都是为了解决什么问题?虚函数是什么,如何实现虚函数?如何用栈实现一个队列?TCP的流量控制,拥塞控制主从reactor是什么,数据是怎么传输的?(以下都是网络检测项目)项目的背景是什么,为什么要做这样一个项目?有没有应用到实际中?ai的具体作用是什么,会不会负载很大?传入ai的是什么?有多大?会不会...
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
6
15
分享
评论
提到的真题
返回内容
招聘动态
查看更多
MiniMax
2026校园招聘
字节跳动火山引擎
2026校园招聘
字节跳动
2026校园招聘
快手
2026届校园招聘
中国证券登记结算有限责任公司
2026年度招聘
全站热榜
更多
1
...
27无实习不投日常了明年3月直接战暑期或者找日常可行吗
2970
2
...
被导员发现之后续集:
2419
3
...
震惊!某HR居然给我发了这样的邮件......
2034
4
...
讲讲我和字节的故事
2032
5
...
Gemini3用了吗,前端是不是无了?
1728
6
...
秋招总结,春招加油
1706
7
...
千万别挂了……
1633
8
...
拼多多 pdd oc tl
1564
9
...
懂车帝后端实习timeline
1422
10
...
不是,现在计算机都喜欢去电网了?
1401
创作者周榜
更多
正在热议
更多
#
那些年,我收到的‘奇葩’回复
#
24245次浏览
162人参与
#
实习需要主动找活干吗?
#
55349次浏览
296人参与
#
小红书开奖了
#
32554次浏览
156人参与
#
OC/开奖
#
191874次浏览
1325人参与
#
你后悔选择现在的专业吗
#
102073次浏览
697人参与
#
职场中那些令人叹为观止的八卦
#
30952次浏览
244人参与
#
腾讯音乐秋招
#
431273次浏览
4779人参与
#
实习教会我的事
#
42226次浏览
342人参与
#
蚂蚁求职进展汇总
#
131805次浏览
1204人参与
#
秋招你经历过哪些无语的事
#
22899次浏览
239人参与
#
2022毕业即失业取暖地
#
120554次浏览
709人参与
#
校招薪资来揭秘
#
85268次浏览
529人参与
#
听到哪句话代表面试稳了OR挂了?
#
106052次浏览
457人参与
#
秋招吐槽大会
#
93585次浏览
802人参与
#
材料人,你最希望上岸的是?
#
12267次浏览
58人参与
#
你今年的保底offer是哪家
#
144034次浏览
620人参与
#
牛客十周岁生日快乐
#
185023次浏览
1825人参与
#
扒一扒那些奇葩实习经历
#
132270次浏览
1125人参与
#
AI时代,哪些岗位最容易被淘汰
#
12405次浏览
101人参与
#
你找工作想离家近 or 离家远?
#
17294次浏览
246人参与
#
你秋招最后悔的选择
#
18963次浏览
137人参与
#
我的职场社死时刻
#
23241次浏览
172人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务