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对于数据的存储查询具有非常好的特性;

目录
相关文章
|
存储 算法 安全
HashMap底层实现原理
HashMap底层实现原理
170 0
|
5月前
|
存储 算法 Java
【Java集合类面试八】、 介绍一下HashMap底层的实现原理
HashMap基于hash算法,通过put和get方法存储和获取对象,自动调整容量,并在碰撞时用链表或红黑树组织元素以优化性能。
|
3月前
|
存储 算法 安全
HashMap的实现原理,看这篇就够了
关注【mikechen的互联网架构】,10年+BAT架构经验分享。深入解析HashMap,涵盖数据结构、核心成员、哈希函数、冲突处理及性能优化等9大要点。欢迎交流探讨。
HashMap的实现原理,看这篇就够了
|
3月前
|
存储 算法 索引
HashMap底层数据结构及其增put删remove查get方法的代码实现原理
HashMap 是基于数组 + 链表 + 红黑树实现的高效键值对存储结构。默认初始容量为16,负载因子为0.75。当存储元素超过容量 * 负载因子时,会进行扩容。HashMap 使用哈希算法计算键的索引位置,通过链表或红黑树解决哈希冲突,确保高效存取。插入、获取和删除操作的时间复杂度接近 O(1)。
33 0
|
3月前
|
存储 算法 安全
HashMap常见面试题(超全面):实现原理、扩容机制、链表何时升级为红黑树、死循环
HashMap常见面试题:红黑树、散列表,HashMap实现原理、扩容机制,HashMap的jd1.7与jdk1.8有什么区别,寻址算法、链表何时升级为红黑树、死循环
|
8月前
|
存储 Java 索引
Java HashMap:设计思想与实现原理详解
Java HashMap:设计思想与实现原理详解
275 0
|
7月前
|
存储 算法 Java
HashMap 的实现原理
HashMap 的实现原理
|
存储 安全 Java
HashMap的实现原理
HashMap是非线程安全的,如果在多线程环境下使用HashMap,需要进行额外的同步操作或者使用线程安全的ConcurrentHashMap。
97 0
|
8月前
|
存储 算法 安全
认真学习Java集合之HashMap的实现原理
认真学习Java集合之HashMap的实现原理
79 0
认真学习Java集合之HashMap的实现原理
|
8月前
|
存储 算法
HashMap的实现原理
HashMap的实现原理