java Arraylist、LinkedList、Vector、HashMap、HashTable初始大小,扩容因子

ArrayList 初始容量:10  ,扩容因子:1,当容量达到上限后才会触发扩容。

扩容公式:新容量 = 旧容量/2 + 旧容量 + 1

比如:初始容量为4,其容量的每次扩充后的新容量为:4->7->11->17->26->...

即每次扩充至原有基础的1.5倍

LinkedList

linkedList没有初始化大小,它就是一个双向链表,没有扩容,就是一直在前面或者在后面新增就好

Vector 初始容量:10 ,扩容因子:1,当容量达到上限后才会触发扩容。

扩容公式:old*2 如:一次扩容为20、二次扩容为40

HashSet 初始容量:16(Hashset是基于HashMap的所以是16)

扩容因子:0.75,当容量达到最大容量的75%时就会触发扩容。

扩容公式:old*2 如:一次扩容32,二次扩容64

HashMap 初始容量:16(为何是16,16是2^4,16<<1=32,可以提高查询效率)

扩容因子:0.75,当容量达到最大容量的75%时就会触发扩容。

扩容公式:old*2 如:一次扩容32,二次扩容64

Hashtable

默认初始容量为11,线程安全,但是速度慢,不允许key/value为null。

加载因子为0.75:即当 元素个数 超过 容量长度的0.75倍时,进行扩容。

扩容增量:2*原数组长度+1,如 HashTable的容量为11,一次扩容后是容量为23。

posted @ 2023-01-07 17:11  锐洋智能  阅读(394)  评论(0编辑  收藏  举报