HashMap底层实现原理

  1. 底层结构
  • jdk1.8以下:HashMap的底层是:数组+链表(单向链表)
  • jdk1.8+:HashMap的底层是:数组+[链表(单向链表) / 红黑树 ]
  1. 线程不安全(put方法没有加锁)
  2. 初始化默认大小:16 【1 << 4】
  3. 扩容
    扩容触发机制:
  • 当前存储过的键值对的数量【即HashMap中的一个size属性】必须大于等于阈值(threshold)【注意:阈值=数组length*加载因子】;

  • 当前加入的数据是否发生hash冲突;
    加载因子:0.75 当元素存储(使用)到达现有数组的75%的时候进行扩容(例如:下标100的数组,任意75个下标存储后就会扩容)

    扩大容量:每次在原基础乘以2,扩容后为原来的2倍

参考地址; https://blog.csdn.net/fox_bert/article/details/90272656

posted @ 2021-08-05 13:53  风飘落叶  阅读(81)  评论(0编辑  收藏  举报