HashMap底层实现原理
- 底层结构
- jdk1.8以下:HashMap的底层是:数组+链表(单向链表)
- jdk1.8+:HashMap的底层是:数组+[链表(单向链表) / 红黑树 ]
- 线程不安全(put方法没有加锁)
- 初始化默认大小:16 【1 << 4】
- 扩容
扩容触发机制:
-
当前存储过的键值对的数量【即HashMap中的一个size属性】必须大于等于阈值(threshold)【注意:阈值=数组length*加载因子】;
-
当前加入的数据是否发生hash冲突;
加载因子:0.75 当元素存储(使用)到达现有数组的75%的时候进行扩容(例如:下标100的数组,任意75个下标存储后就会扩容)扩大容量:每次在原基础乘以2,扩容后为原来的2倍
参考地址; https://blog.csdn.net/fox_bert/article/details/90272656