Java学习笔记_Day24(HashMAap)

目录

HashMap的实现原理

HashMap的put(key,val)

HashMap的扩容机制


HashMap的实现原理

在JDK1.7版本之前,HashMap数据结构是数组和链表,HashMap通过哈希算法将元素的键映射到数组中。如果多个键映射到数组同一个位置,它们会以链表的形式进行存储,应为链表的查询时间为o(n),链表长的时候,效率就低了。

所有在JDK1.8后,当一个的链表长度超过8的时候就转为红黑树,查找时间为O(logn),提高了查询效率

HashMap的put(key,val)

计算hash从而得到索引位置。进一步存储。HashMap会根据数组的占用情况自动调整容量(超过就resize为原来的两倍)

HashMap的扩容机制

HashMap默认的负载因子为0.75,即如果HashMap中的元素个数超过总容量的75%,就会扩容

  • 第一步对哈希表长度的扩展(2倍)
  • 第二步将旧哈希表中的数据放到新的哈希表中
相关推荐
Harm灬小海1 分钟前
【云计算学习之路】学习Centos7系统-Linux软件包管理
linux·运维·服务器·学习·云计算·yum·rpm
清平乐的技术专栏5 分钟前
【Kafka笔记】(四)Kafka 三种消费模式
笔记·分布式·kafka
砍材农夫5 分钟前
物联网 基于netty构建mqtt协议规范(主题通配符订阅)
java·前端·javascript·物联网·netty
魔法阵维护师9 分钟前
从零开发游戏需要学习的c#模块,第十七章(显示真正的图片——精灵绘制)
学习·游戏
婷婷_1729 分钟前
JTAG (IEEE 1149.1)学习记录
学习·程序人生·debug·芯片·jtag·phy·eth/pcie
LuminousCPP10 分钟前
数据结构 - 线性表第三篇:基于顺序表实现 C 语言通讯录(基础功能篇)
c语言·数据结构·经验分享·笔记·算法
_日拱一卒15 分钟前
LeetCode:114二叉树展开为链表
java·开发语言·算法
ygkl969815 分钟前
未完待续 模拟题
学习
Szime17 分钟前
深智微华润微代理端整理:FS32K144国产化替代三年BCM选型验证避坑笔记
笔记
SamDeepThinking20 分钟前
面试官问Bean线程安全,你该从架构角度回答
java·后端·面试