HashMap的实现原理

简介: HashMap的实现原理

HashMap的实现原理:

由Map接口定义的集合又被叫做是查找表,将key值作为value的索引,以key-value键值对的方式进行数据存储,其中key值不可重复; 而Map有多种实现类,以哈希表(hashtable)作为底层数据结构实现的,我们叫做HashMap;因此HashMap的实现原理即哈希表数据结构的实现原理

基于哈希表(数组+链表+二叉树(红黑树))

默认的加载因子为0.75,默认数组大小为16

对象存储到哈希表中,如何存储?

把key通过hash()方法计算hash的值,然后用这个hash值对数组长度(默认是16)取模,来决定对key对象再数组中存储的位置,当这个位置有多个对象时,以链表结构存储,JDK1.8后,当链表长度大于8时,链表转换为红黑树结构存储,这样的目的是为了取值更快,存储的数据量越大,性能的表现越明显。

扩充原理

当数组的容量超过75%时,数组需要进行扩充,每次扩充1倍,扩充次数过多,会影响性能,每次扩充表示哈希表会重新散列(重新计算每个位置的存储位置),我们尽量在开发中减少扩充次数带来的性能问题。

线程不安全,适合在单线程里使用

总结:

hash表就是通过传入的键值对,通过hash算法指向一个连续的存储空间(数组存储),将键值对存入数组;对于指向相同的存储空间的hash值,再以链表方式存储;这样hashmap不仅具有了数据查询快速的特性,同时有了链表方便插入、删除的特性;因此hashMap对于数据的存储查询具有非常好的特性;

目录
相关文章
|
8月前
|
存储 算法 安全
HashMap底层实现原理
HashMap底层实现原理
103 0
|
6天前
|
存储 算法
HashMap源码分析
HashMap源码分析
|
6天前
|
存储 算法
HashMap的实现原理
HashMap的实现原理
|
9月前
|
存储 Java
HashMap 的 源码分析
HashMap 的 源码分析
62 0
|
存储 Java Serverless
HashMap底层原理
1. 基本概念 2. HashMap 的底层数据结构 3. HashMap 的 put 方法流程 4. 怎么计算节点存储的下标 5. Hash 冲突 1)概念 2)解决 hash 冲突的办法 开放地址法 再哈希法 链地址法 建立公共溢出区 6. HashMap 的扩容机制 1)扩容时涉及到的几个属性 2)扩容的条件 3)扩容的简要流程
67 0
|
存储 算法
面试题:说一下HashMap和HashSet的实现原理?
面试题:说一下HashMap和HashSet的实现原理?
71 0
|
存储
HashMap 的原理
HashMap 的原理
HashMap 的原理
|
存储 算法 Java
HashMap都在用,原理你真的了解吗?
HashMap虽然日常大家都在用。网上对hashMap原理讲解的博客文章也是数不胜数,想要彻底掌握其底层原理和实现流程;还是得结合jdk源码一步一步跟踪。
HashMap都在用,原理你真的了解吗?
|
索引
30. 说一下HashMap的实现原理?下
30. 说一下HashMap的实现原理?下
80 0
|
存储 索引
30. 说一下HashMap的实现原理?中
30. 说一下HashMap的实现原理?中
67 0
30. 说一下HashMap的实现原理?中