其他分享
首页 > 其他分享> > HashMap和ConcurrentHashMap在JDK1.7和1.8的区别

HashMap和ConcurrentHashMap在JDK1.7和1.8的区别

作者:互联网

一、HashMap在JDK1.8里的优化

  1.结构上加了红黑树,提高了在高哈希冲突在的效率(链表长度为8且数组长度超过64) 

  2.插入时采用尾插法,避免了并发情况下的循环链表,但不能避免并发时数据覆盖(1.7会倒置链表)

  3.二次哈希时扰动处理优化(4次位运算,5次异或到1次位运算,1次异或)

  4.不再在new时调用默认参数的构造方法,转而在put第一个元素时初始化(初始化操作集成在reSize里面)

  5.扩容时的rehash优化,只考虑高位bit,高位为0则保持在原索引位置,为1则偏移+原capacity(1.7需要重新遍历两次哈希)

  6.先插入再扩容,且再超过阈值时判断有无哈希冲突,没有则不扩容(先插入后进行统一rehash操作)

  

二、ConcurrentHashMap

  

  

标签:ConcurrentHashMap,1.7,HashMap,1.8,次位,链表,插入,哈希
来源: https://www.cnblogs.com/p6545244/p/15914452.html