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倍)
  • 第二步将旧哈希表中的数据放到新的哈希表中
相关推荐
第七页独白6 分钟前
汽车零件厂如何通过 QMS 真正落地 IATF 16949——QMS软件系统:品质检验-内审稽核-8d客诉管理:全星质量管理软件系统
java·前端·数据库
传奇开心果编程8 分钟前
【Compose Multiplatform 跨端开发学与练】第7课 平台适配与互操作
android·windows·学习·ui·ios·kotlin·composer
QCoding14 分钟前
Spring AI Alibaba Graph实战:从ReAct Agent到Workflow,企业AI复杂流程该如何编排?
java·人工智能
用户0942485680316 分钟前
第25章:Java虚拟线程(Project Loom)实战与调度协作
java·jvm
砚底藏山河23 分钟前
量化实战:截面因子有效性检验(IC 分析与分层回测)
java·python·金融·maven
wuminyu23 分钟前
ForkJoinPool内部WorkQueue的Lock-Free数组操作以及并发任务窃取原理剖析
java·linux·c语言·jvm·c++
Elastic 中国社区官方博客23 分钟前
使用 Lucene 搜索你的 Bean — 索引
java·大数据·数据库·elasticsearch·搜索引擎·全文检索·lucene
code2cat30 分钟前
Java进阶篇之AtomicMarkableReference:引用还在,标记已经改变
java·开发语言·cas·并发编程·逻辑删除
我命由我1234543 分钟前
Photoshop - Photoshop 使用对齐功能定位元素
学习·职场和发展·产品运营·求职招聘·职场发展·产品经理·学习方法
她说彩礼65万1 小时前
C语言 堆区和栈区
java·linux·c语言