Java教程

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

  

  

这篇关于HashMap和ConcurrentHashMap在JDK1.7和1.8的区别的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!