Hash和HashMap的初步认识

HashMap的初步认识

基于Hash算法,是一种数据结构。List(列表)、Set、Map、Queue都是数据结构(容器)。

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

特点:以查找速度非常快得以常用。

一、什么Hash

Hash又称作散列,音译顾名思义又叫做 “哈希”
特点摘要: 能把任意长度的输入,可以通过散列算法计算后变成固定长度的输出。

但不同的输入,经过hash之后的输出可能会有重复的值。
并且很难找到逆向的规律(不可逆的)。

二、HashMap

1.对HashMap的简单介绍
1.1 它内部的基础结构是数组。
2.2 put进去的键值对不会按顺序排序。
3.3 put一个key-value的时,先根据key计算出一个hash值,可以得出存放的位置。

2.处理冲突
Hash和HashMap的初步认识
桶:数组中每一个元素可以看做一个桶
不冲突的时候每个桶只存一个键值对Node
如果冲突很多,Node的next属性不为空,组成链表
冲突非常多,一个桶超过八个,升级为红黑树

3.几个常用的重要属性

capacity: 容量,数组的长度。
size: 实际装的数量,大小。
loadFactor: 负载因子,百分比,size到了百分之多少,就扩大一定容量。
threshold: 扩容的阈值,size达到多少个数量的时候,就扩大容量,等于capacity * loadFactor。