HashMap底层原理(图文并茂,简单易懂)

大家先看下这张图片:
在这里插入图片描述
1、HashMap是基于哈希表实现的,而哈希表的底层是数组加上链表的形式。

2、数组内存连续查询效率高,链表内存分散增删改效率高,哈希表采用此种存储数据的形式极大的提高操作数据的效率。

3、哈希表的默认长度是16,编号从0开始。图中编号0-4的长方形代表了一个数组,箭头指向的代表了一个一个的链表。

HashMap存储数据原理

1、用HashMap存储数据( put(key,value) )时,会先调用key.hashcode()得到hashcode哈希表会先将HashMap的key通过hashCode,再通过hashcode找到该数据在哈希表上的的存储位置。
2、如果该位置没有数据,则直接存储。如果该位置有数据,则会发生碰撞。
3、逐个检查该位置上链表中的数据,通过equals()方法来比对每个数据的key。如果key相同的话,数据覆盖。如果key不相同的话,该数据存储在链表尾部。
4、当链表上的节点个数(数据个数)大于8时,链表数据结构自动变成二叉树。

猜你喜欢

转载自blog.csdn.net/C2667378040/article/details/106841319