看了别人的博客之后理解的,不知道对不对,要是大佬发现不对麻烦指正
hashmap的扩容
默认的加载因子0.75
默认的数组长度
当一个map的数组使用大于默认数组长度16*0.75时就会进行扩容。
对于为什么链表达到8的时候才会转换为红黑树结构:原因有下:
由于链表结构的时间复杂度是n/2,红黑树的最坏的时间复杂度都是log(n),而红黑树结构又比较占用内存空间资源,所以这是一个用空间换时间的方式,如果直接使用红黑树结构的话,付出的代价要更大,因为红黑树比较消费资源,所以只有当链表长度达到一个比较极限的位置时再去转换为红黑树结构,这样才能有效的效益最大化,新的性能对于消费的资源来说是划算的,从hashmap的源码中我们可以看到,当负载因子为0.75且链表长度大于8时概率很低,除非极端情况下,基本使用的还都是链表结构。