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

JDK1.7和1.8HashMap有什么区别

时间:2020-05-24 13:38:47      阅读:74      评论:0      收藏:0      [点我收藏+]

标签:nbsp   就是   数组   大数据   后继节点   大数   大数据操作   多线程   头插法   

JDK1.7和1.8 HashMap区别:

  1.  *******    数组+链表    改成了  ****数组+链表或红黑树;       高位使用红黑算法可以提高操作效率  可以说对java大数据操作提高了很多 所以很多面试喜欢问  

  2.表的插入方式从头插法改成了尾插法,简单说就是插入时,如果数组位置上已经有元素,1.7将新元素放到数组中,原始节点作为新节点的后继节点,1.8遍历链表,将元素放置到链表的最后;

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

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

 

原因:

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

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

JDK1.7和1.8HashMap有什么区别

标签:nbsp   就是   数组   大数据   后继节点   大数   大数据操作   多线程   头插法   

原文地址:https://www.cnblogs.com/chenlong321/p/12950482.html

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