HashMap 的底层数据结构是什么?

HashMap 的底层数据结构是什么?

在JDK1.7 中,由"数组+链表"组成:数组是 HashMap 的主体,链表则是主要为了解决哈希冲突而存在的。

在JDK1.8 中,由"数组+链表+红黑树"组成:当链表过长,则会严重影响 HashMap 的性能,红黑树搜索时间复杂度是 O(logn),而链表是糟糕的 O(n)。因此,JDK1.8 对数据结构做了进一步的优化,引入了红黑树,链表和红黑树在达到一定条件会进行转换:

● 当链表长度 > 8 && 数组长度 >= 64 才会转红黑树; 其实这种情况,发生的概率很低。

● 将链表转换成红黑树前会判断,如果当前数组的长度小于 64,那么会选择先进行数组扩容 ,而不是转换为红黑树,以减少搜索时间。因为,数组扩容在一定程度上也可以减少哈希冲突如的发生。

相关推荐
u01030552712 小时前
Java AWT鼠标事件全解析
人工智能·1024程序员节
u0103055273 天前
Java实用类应用精讲
人工智能·1024程序员节
u0103055273 天前
Java I/O核心操作实战
人工智能·1024程序员节
u0103055274 天前
ArrayList操作详解与实战应用
人工智能·1024程序员节
u0103055275 天前
Java模块化编程实战指南
人工智能·笔记·1024程序员节
u0103055276 天前
使用BufferedReader读取控制台输入
人工智能·1024程序员节
u0103055276 天前
泛型类与类型安全详解
人工智能·1024程序员节
u0103055278 天前
Java异常处理核心机制
人工智能·1024程序员节
炽天使32815 天前
Knife4j 4.5.0 + Spring Boot 3.4.11 版本兼容问题解决方案
1024程序员节