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

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

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

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

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

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

相关推荐
学传打活3 天前
【边打字.边学昆仑正义文化】_进阶篇5 宇宙星系的运转(续1)
微信公众平台·1024程序员节·汉字·昆仑正义文化
爱敲键盘的猴子9 天前
深入理解 Java HashMap
java·hashmap
fangzhanpeng16811 天前
快速掌握C#语言基础知识点(1.基础数据类型)
开发语言·c#·1024程序员节
无己心13 天前
面向多平台 AI 搜索引擎的适配层架构设计
前端·人工智能·搜索引擎·ai·1024程序员节
阿pin17 天前
Java随笔-JDK7 HashMap头插法为何能导致死循环?
java·开发语言·hashmap
Tsuki_tl18 天前
【面试高频】 HashMap, HashTable,ConcurrentHashMap 之间的区别
面试·hashmap·synchronized·哈希表·多线程并发·hashtable·分段锁
u01030552719 天前
AI驱动的安卓UI自动生成功能实现
人工智能·1024程序员节
行者-全栈开发19 天前
美团后端开发面试题全集(2026最新版):HashMap、JVM、MySQL、Redis高频考点深度解析
jvm·hashmap·java面试题·后端开发·redis缓存·mysql索引·面经汇总
u01030552719 天前
长株潭智能体赋能腾讯元器链接共享
1024程序员节
云贝贝贝21 天前
OceanBase认证体系介绍与备考指南
运维·服务器·oceanbase·1024程序员节