首页 > 其他 > 详细

HashMap与ConcurrentHashMap

时间:2021-07-23 11:23:25      阅读:25      评论:0      收藏:0      [点我收藏+]

HashMap

HashMap1.8结构图

技术分享图片

 

 

put过程结构图

技术分享图片

 

重要的属性

技术分享图片

 

 重要的方法put

技术分享图片

 

 

 

 1.7与1.8的区别

1.7数组+链表    1.8  数组+链表或红黑树

 1.7 采用头插法 插入时,如果数组位置上已经有元素,将新元素放到数组中,原始节点作为新节点的后继节点  1.8尾插法  遍历链表,将元素放置到链表的最后

1.7 先判断是否需要扩容,再插入 1.8先进行插入,插入完成再判断是否需要扩容

1.7 扩容的时候需要对原数组中的元素进行重新hash定位在新数组的位置,1.8 采用更简单的判断逻辑,位置不变或索引+旧容量大小

好处是

  1. 防止发生hash冲突,链表长度过长,将时间复杂度由O(n)降为O(logn);

  2. 因为1.7头插法扩容时,头插法会使链表发生反转,多线程环境下会产生环;

HashMap与ConcurrentHashMap

原文:https://www.cnblogs.com/fuqiang-zhou/p/15047024.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!