HashMap和ConcurrentHashMap在JDK1.7和1.8的区别
2022/2/20 6:26:16
本文主要是介绍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的区别的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-01后台管理开发学习:新手入门指南
- 2024-11-01后台管理系统开发学习:新手入门教程
- 2024-11-01后台开发学习:从入门到实践的简单教程
- 2024-11-01后台综合解决方案学习:从入门到初级实战教程
- 2024-11-01接口模块封装学习入门教程
- 2024-11-01请求动作封装学习:新手入门教程
- 2024-11-01登录鉴权入门:新手必读指南
- 2024-11-01动态面包屑入门:轻松掌握导航设计技巧
- 2024-11-01动态权限入门:新手必读指南
- 2024-11-01动态主题处理入门:新手必读指南