HashMap介绍
HashMap简单介绍
基本hash算法的图,是一种数据结构。List,Set,Map,Queue都是数据结构(容器)。
数据结构:
线性结构(数组,列表List,队列,栈…),树(二叉树,B树),堆,图
1.Hash算法
什么是Hash?散列(或音译哈希)
把任意长度的输入,通过散列算法变成固定长度的输出:摘要算法
对于同一个hash算法,同样的输入,会有同样的输出。
hash是一个广义的算法,是一种思想。
特点
不同的输入,经过hash之后的输出肯能会重复
很难找到逆向的规律(根据输出的结果无法反推出输入的是什么)
用来干什么?
提高存储空间的利用率
提高查询的效率
做数字签名保证数据传递的安全性
作为加密的一种方式
MD4,MD5=Message Digest消息摘要
2.HashMap
第一个认识:它内部的基础结构是数组。
第二个认识:put进去的键值对不是按顺序排列的
第三个认识:put一个key-value的时候,先根据key计算出一个hash值,得出存放的位置
HashMap冲突多了会怎样?
HashMap如何处理hash冲突?
桶:数组中每个元素就是一个桶,不冲突的时候每个桶只存放一个键值对Node
冲突有多点,Node的next属性不为空,组成链表
冲突非常多,一个桶超过8个,升级为红黑树
HashMap类中几个重点的属性:
capacity:容量,数组的长度
size:实际装的数量
loadFactor:负载因子,百分比,size到了百分之多少,就扩大容量
threshold:扩容的阈值,size达到多少个数量的时候,就扩大容量,等于capacity*loadFactor