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操作)

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

二、ConcurrentHashMap

  

  

上一篇:python django web项目的构建步骤(二)


下一篇:Java基础 -> Jdk1.7到Jdk1.8HashMap 发⽣了什么变化(底层)?