HashMap的工作原理
来源:互联网 发布:返利软件 知乎 编辑:程序博客网 时间:2024/06/06 02:03
HashMap的工作原理
HashMap基于hashing原理,我们可以通过put(key, value)存储对象到HashMap中,可以通过get(key)从HashMap中获取对象。当我们将键值对传递给put()方法时,它先会调用key(键对象)的hashCode()方法来计算其hashCode,然后通过hashCode找到bucket位置的Entry对象(里面储存了key(键对象)和value(值对象)。
碰撞探测和解决方法:
(1)当两个key(键对象)的hashCode相同会发生什么?
他们有equals()和hashCode()方法,所以两个对象就算是hashCode相同,他们也是有可能不相等的。但是hashCode相同,所以他们的bucket位置就是相同的,“碰撞”就会发生。
因为HashMap使用了LinkedList存储对象,所以这个Entry(包含有键值对的Map.Entry对象)会存储在LinkedList中。
(2)当两个key(键对象)的hashCode相同,如何获取值对象?
当调用get(key)方法,HashMap会使用键对象的hashCode找到bucket位置,然后获取value(值对象)。
(两个值对象存储在同一个bucket)--》 遍历所有的LinkedList直到找到值对象。
(没有值对象去比较,如何确定找到值对象?【HashMap在linkedList中存储的是键值对】) --》 找到bucket位置后,会调用keys.equals()方法去找到LinkedList中正确的节点,从而找到值对象。
HashMap的大小、负载因子
默认的负载因子大小为0.75。即 当一个map填满了75%的bucket时候,和其它集合类(如ArrayList等)一样,将会创建原来HashMap大小的两倍的bucket数组,来重新调整map的大小,并将原来的对象放入新的bucket数组中。这个过程叫作rehashing(调用hash方法找到新的bucket位置)。 1 0
- HashMap的工作原理
- HashMap的工作原理
- HashMap的工作原理
- HashMap的工作原理
- HashMap的工作原理
- HashMap的工作原理
- HashMap的工作原理
- HashMap的工作原理
- HashMap的工作原理
- HashMap的工作原理
- HashMap的工作原理
- HashMap的工作原理
- HashMap的工作原理
- HashMap的工作原理
- HashMap的工作原理
- HashMap的工作原理
- HashMap的工作原理
- HashMap的工作原理
- SpringMVC浅谈
- JQuery中$.ajax()方法参数详解
- ASP.NET MVC4(Razor)从客户端中检测到有潜在危险的 Request.Form 值
- Leetcode 292. Nim Game (Easy) (cpp)
- WCF调用异常
- HashMap的工作原理
- OJ 三角形面积
- !Java中Vector和ArrayList的源码中为什么要赋值给oldData
- 携程移动端架构演进与优化之路
- 详解Android中玩转高德地图
- Java Web学习总结(28)——Java Web项目MVC开源框架SSH和SSM比较
- for update or for update nowait 的区别
- 总结Oracle11g初始化数据库的步骤
- 烧脑电影:黑洞频率(Frequency)