HashMap简单总结
什么是HashMap?
HashMap(散列图)基于Hash算法键值映射的实现。
- Map:
Map是用于储存键值对的集合接口,同collection是同级的集合接口 - Hash:
- Hash算法是指将任意长度的输入经过计算之后转换为固定长度的输出;
- 特点:
1.无法通过计算出来的Hash值逆推输入的内容
2.在有限的资源环境中最快速度计算出值
3.不同的内容存在计算出相同值的可能
为什么要用HashMap?
可以以极快的速度进行键值映射查询。
HashMap里面有什么?
1.HashMap内部储存数据使用的是一个叫table的对象,
本质上是一个数组
2.在存储数据时,存储位置不是按顺序储存的。
3.储存位置是根据计算出来的Hash值来决定的。
Hash算法存在的问题:
- Hash值重复导致的冲突问题
HashMap的解决方式:
- 桶:桶通俗理解就是数组的一个元素
- 当Hash值相同时在同一个桶中挂链表
- 出现的问题:当链表过于长会降低查询速度
- 在同一个桶中链表长度达到8个链表会升级为红黑树
HashMap还有什么?
- capcaity:容量(比如一个杯子,一共能装多少水)
- size:长度(这个杯子装了多少水)
- loadFactory:负载因子(如果这个杯子满了需要扩充的容量百分比,根据与总容量的乘积得出达到多少长度便扩充)