HashMap的基本操作
分类:
文章
•
2025-02-24 10:00:26
HashMap是基于hash算法的图,是一个数据结构
标题数据结构有:线性结构(数列表List、队列、栈…)、树(二叉树、B树…)、堆、图
Hash算法
- 是把任意长度的输入,通过散列算法变成固定长度的输出:摘要算法。
- 同一个hash算法,同样的输入,就会有同样的输出。
Hash算法特点
- 不同的输入,经过hash之后的输出可能会重复;
- 很难找到逆向的规律(根据输出结果无法反推出输入是什么);
作用
- 提高存储空间利用率;
- 提高查询效率;
- 做数字签名保证数据传递的安全性;
- 作为加密的一种方式(MD4、MD5=Message Digest消息摘要);
HashMap特点
- 查找非常快;
- 内部基础结构是数组;
- put进去的键值对不是按顺序排列的;
- java中的hashCode:是int类型,取值范围是-21亿多到+21亿多,42亿多种可能;
- put一个key-value的时候,先根据key计算出一个hash值;
HashMap类中几个重要的属性
- capacity:容量,数组的长度;
- size:实际装的数量;
- loadFactor:负载因子,百分比,size到了百分之多少,就扩大容器;
- threshold:扩容的阈值,size达到多少个数量的时候,就扩大容量,等于capacity*loadFactor;
HashMap如何处理hash冲突
- 桶:数组中每个元素就是一个桶,不冲突的时候每个桶只存一个键值对Node;
- 冲突有点多,Node的next属性不为空,组成链表;
- 冲突非常多,一个桶超过8个,升级为红黑树;