特点
1.存取无序
2.key不能重复
3.key和value都允许为null
4.可序列化,线程不安全
数据结构
1.HashMap默认数组初始大小为16,默认负载因子为0.75
负载因子是HashMap数组扩容的阈值最大比例,就是16 x 0.75 = 12 大于12后就会自动扩容
2.jdk1.8之前是 数组 + 链表 实现,jdk1.8及其之后是 数组 + 链表 + 红黑树 实现
jdk1.8之前创建HashMap时就会创建16位长度的数组,jdk1.8及其之后是在第一次put时才会创建数组
3.当HashMap的某个链表长度大于阈值8并且数组长度大于等于64时就会将链表转化为红黑树
红黑树长度小于6时就会退化为链表
4.当HashMap的某个链表长度大于阈值8但是数组长度小于64时会触发数组扩容机制,重新调整并计算在数组中的位置,称为resize
借鉴结构图列:

HashMap是一种无序、key不重复的数据结构,允许key和value为null。其默认初始化大小为16,负载因子为0.75,当元素数量达到负载因子与数组大小的乘积时会扩容。在JDK1.8之前,HashMap基于数组+链表实现,之后引入红黑树,链表长度超过8且数组大小超过64时转为红黑树,长度小于6时退化回链表。
7014

被折叠的 条评论
为什么被折叠?



