首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
AI 模拟面试
简历
求职
学习
课程
专栏·文章
竞赛
搜索
我要招人
发布职位
发布职位、邀约牛人
更多企业解决方案
在线笔面试、雇主品牌宣传
登录
/
注册
蜗牛20191023145836
2021-05-17 03:08
Java
关注
已关注
取消关注
hashmap底层原理
hashmap是由数组+链表构成的,在数组里面嵌套了链表,链表使用的结构为头插法。链表里面可以放多个entry即key, value防止冲突。
#Java工程师面试常考题#
#学习路径#
提示
全部评论
推荐
最新
楼层
蜗牛20191023145836
楼主
Java
https://zhuanlan.zhihu.com/p/76735726
1
回复
分享
发布于 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
博乐游戏
校招火热招聘中
官网直投
相关推荐
求求offer的考拉很机智
04-06 16:57
大连海事大学 计算机类
4.2淘天Java一面凉经
自我介绍Java是怎么判断垃圾是可以被回收的,内存泄漏JVM会报什么异常如何排查OOMConcurrentHashMap是怎么样实现高并发,hashmap在并发的时候有什么问题读多写少的缓存设计线上场景下面,CPU负载高怎么排查ThreadLocal
淘天集团一面121人在聊
点赞
评论
收藏
转发
Java八股吟唱大法好
03-21 23:19
已编辑
门头沟学院 计算机类
3/21 美团暑期一面凉经
暑期第一面凉,来攒攒人品。面试官人很好,就是不太爱问八股,偏实际应用,回答的都不是很全面- 自我介绍- 拷打实习和项目- 如何解决bug?- redis为什么比sql快- 热点数据一定适合放在Redis中嘛?- Kafka延迟写入有什么问题,不包括消息丢失,重复消费,顺序消费- hashmap为啥不安全- 算法:约瑟夫环 很多年没做了,讲了思路,写了没来及测试,时间到了。
点赞
评论
收藏
转发
到底是啥
03-22 15:52
门头沟学院 电子信息类
京东测开一面
投递岗位:测开面试时间:11.22面试题目:测试和开发的区别?测试开发做什么?面试官介绍测试开发如果让你测试一个购物车,你怎么测试?Redis分布式锁怎么实现的?测试思维很重要极简思维总结:没有专门看过测开相关的,主要是面试官在给我介绍测开相关的工作,面试官讲了20多分钟。
京东一面79人在聊
软件开发2024笔面经
点赞
评论
收藏
转发
Embrace12138
03-19 18:16
门头沟学院 计算机类
#软件开发2024笔面经# #美团##美团实习#美团到店一面,拷打了四十分钟项目(怎么别人都是八股就我拷打项目。。),十分钟八股concurrentHashMap和HashTable区别线程池参数,如何获取线程池执行结果数据库怎么样就加了行锁(不会)索引失效其他忘了十分钟手撕反转字符串(一开始傻傻写O(n)后面才记起来要二分。。)一小时后打电话约二面(天天项目被问烂都能过,属实有点狗运了)
软件开发2024笔面经
点赞
评论
收藏
转发
给🐭🐭个面试机会吧
04-03 16:08
京东_测开(实习员工)
快手客户端开发实习生-【本地生活】
4.1晚上约面的,4.3一面,许愿二面,面试官全程引导,面试体验可以说是相当好了。一.自我介绍之后,面试官看我是人工智能专业的,问了我一些有关推荐算法的场景题,虽然我忘的差不多了,但还是凭借微弱的本科课设经历编了编,然后面试官说思路还行(大体围绕着训练推荐模型,用户爱好建模,带点深度学习那味)二.1.之后问了java基础,hashmap是不是线程安全的,然后介绍了hashtable和concurrenthashmap的原理。2.hashmap和linkedhashmap的比较3.arraylist和linkedhashmap取出一个值的时间复杂度4.有哈希冲突怎么解决5.强引用,弱引用,软引用...
点赞
评论
收藏
转发
6
13
评论
分享
回复帖子
招聘动态
查看更多
小红书
24届春招&25届实习生招聘
博乐游戏
24届春招&25届实习生招聘
24届春招硬件高薪职位集合
阅文集团2024春季校招
全站热榜
1
...
团孝子0实习勇闯暑期
1.6W
2
...
【暑期实习总结】 无法去当腾孝子了TAT
1.1W
3
...
25届第一份实习怎么找?
1.1W
4
...
看着妈妈发的微信眼泪止不住的流
1.0W
5
...
硕士论文盲审过啦
8300
6
...
盲审过了!加油兄弟们!
8091
7
...
兄弟们我该怎么办
6610
8
...
2024年计算机专业出路有哪些?
6204
9
...
心态崩了,不想面也不想投了,就这样吧
5826
10
...
【奖品公示】八股题单第一周获奖名单👏👏
5681
正在热议
#
牛客帮帮团来啦!有问必答
#
116454次浏览
2974人参与
#
OPPO求职进展汇总
#
73522次浏览
875人参与
#
你会选择考研还是直接就业
#
53192次浏览
599人参与
#
找工作时遇到的神仙HR
#
139597次浏览
1441人参与
#
比亚迪求职进展汇总
#
107818次浏览
930人参与
#
机械专业只有考研才有出路吗
#
16871次浏览
333人参与
#
入职第三天,晒晒你的工位
#
4346次浏览
38人参与
#
产品人求职现状
#
42639次浏览
648人参与
#
你觉得通信/硬件有必要实习吗?
#
16818次浏览
367人参与
#
23届的你们都什么时候入职?
#
68572次浏览
583人参与
#
非技术岗是怎么找实习的
#
59010次浏览
1229人参与
#
找不到好工作选择GAP真的丢人吗
#
6963次浏览
76人参与
#
高学历就一定能找到好工作吗?
#
6236次浏览
106人参与
#
Offer比较,你最看重什么?
#
39051次浏览
403人参与
#
学历对求职的影响
#
107674次浏览
1197人参与
#
你觉得机械有必要实习吗
#
5654次浏览
77人参与
#
快手工作体验
#
32469次浏览
678人参与
#
联想求职进展汇总
#
30233次浏览
505人参与
#
选了这个offer,你有没有后悔?
#
69350次浏览
602人参与
#
0offer是寒冬太冷还是我太菜
#
321758次浏览
4043人参与
牛客网
牛客企业服务