深度了解HashMap

HashMap

基于hash算法的图,是一种数据结构。List、Set、Map、Queue都是数据结构(容器)。

数据结构:线性结构(数组、列表List、队列、栈…)、树(二叉树、B树)、堆、图。

特点:查找非常快。

1.Hash算法

什么是Hash?
散列(或音译哈希)。

摘要算法:把任意长度的输入,通过散列算法变成固定长度的输出。

在这里插入图片描述特点:
不同的输入,经过hash之后的输出可以会有重复的。
很难找到逆向的规律(不可逆的)。

2.HashMap

1.HashMap的认识
第一个认识:它内部的基础结构是数组。
第二个认识:put进去的键值对不是按顺序排序的。
第三个认识:put一个key-value的时候,先根据key计算出一个hash值,得出存放的位置。

2.如何处理hash冲突
在这里插入图片描述桶:数组中每个元素就是一个桶,不冲突的时候每个桶只存一个键值对Node
冲突很多,Node的next属性不为空,组成链表
冲突非常多,一个桶超过八个,升级为红黑树

3.HashMap类中几个重要的属性
capacity:容量,数组的长度。
size:实际装的数量。
loadFactor:负载因子,百分比,size到了百分之多少,就扩大容量。
threshold:扩容的阈值,size达到多少个数量的时候,就扩大容量,等于capacity*loadFactor。

发布了1 篇原创文章 · 获赞 1 · 访问量 28

猜你喜欢

转载自blog.csdn.net/oywenzhuo/article/details/105384213