一、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