1、HashMap是一种数据存储的容器,当创建一个集合对象的时候,实际上就是在内存里面一次性的申请了一块内存空间,存储容量的大小是在创建集合的时候给指定的,HashMap的默认大小是16
2、当集合存储容量达到某个临界值的时候,就会动态扩容,临界值 = 扩容因子*容量大小,负载因子默认是0.75,也就是元素达到12的时候会触发扩容,扩容大小是原来的2倍;
3、HashMap本质上数组的结构,在扩容的时候需要新建一个更长的数组,然后将原来数组里面的数据copy到新数组就可以啦
为什么扩容因子是0.75?
1、扩容因子表示哈希表中值的填充程度
2、扩容因子越大,触发扩容的元素个数越多,虽然空间的整体利用率会比较高,但是hash冲突的概率也会比较高
3、扩容因子越小,触发扩容的元素个数越少,虽然hash冲突的概率降低,但是空间的整体利用率会降低,而且会增加扩容的频率
4、扩容因子是冲突的概率和空间利用率之间的平衡
5、HashMap采用链式寻址的方式来解决hash冲突,为避免链表过长带来时间复杂度增加的情况,所以链表长度大于等于7的时候,就会转为红黑树,从而提升检索的效率;当扩容因子为0.75的时候,链表长度达到8的可能性几乎为0标签:扩容,hash,HashMap,链表,面试,因子,0.75 From: https://www.cnblogs.com/qingxuan0316/p/16589618.html