码迷,mamicode.com
首页 > 其他好文 > 详细

HashMap的底层实现原理

时间:2018-05-11 00:49:41      阅读:209      评论:0      收藏:0      [点我收藏+]

标签:线程安全   equals   htable   hash   调用   技术分享   shc   syn   一个   

1.线性链表->数组+链表 --------HashMap是数组结构、链表结构与Hash算法的结合。

如图所示:

技术分享图片

 

技术分享图片Hash算法中  Object.hashcode()   计算出Object的哈希码值(int)

  同一个对象 多次调用 hashcode()得到的结构都是相同的

  两个对象调用equals()方法结果为true 即比较结果相同,这两个对象再调用hashcode()也一定相同。如果这个两个对象调用equals()方法结果不相同的话,这两个对象再调用hashcode()也不一定不相同。

HashMap 和HashTable的区别:

  HashMap允许空值和空键;

  HashTable不允许空value。源码如图:

技术分享图片

而且是线程安全的,synchronized,下面这个是另外一个ConcurrentHashMap,hashtable是锁整张表,而这个是锁某个段。HashMap是线性非安全的,效率较线程安全的来时相对高。

技术分享图片

技术分享图片

       // 2.通过Hash算法计算要插入的值。

 

HashMap的底层实现原理

标签:线程安全   equals   htable   hash   调用   技术分享   shc   syn   一个   

原文地址:https://www.cnblogs.com/auldlangsynezh/p/9022508.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!