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。