【2020面试】- Java中常见集合的默认大小以及扩容机制

list元素时有序的、可重复
Arraylist、vector默认初始化容量为10

vector:线程安全,但速度慢
底层数据结构为数组结构
加载因子为1:即当元素个数超过容量长度时,进行扩容
扩容增量:原容量的1倍
如vector的容量为10,一次扩容后是容量为20

ArrayList:线程不安全,查询速度快
底层数据结构是数组结构
扩容增量:原容量的0.5倍+1
如ArrayList的容量为10,一次扩容后是容量为16

Set元素无序、不可重复
hashset:线程不安全,存取速度快
底层实现是一个HashMap(保存数据),实现Set接口
默认初始化容量为16(为何是16,见下方对HashMap的描述)
加载因子为0.75:即当元素个数超过容量长度的0.75倍时,进行扩容
扩容增量:原容量的1倍
如hashSet的容量为16,一次扩容后是容量为32

Map是一个双列集合
HashMap:默认初始容量为16
(为何是16:16是2^4,可以提高查询效率,另外,32=16<<1)
加载因子为0.75:即当元素个数超过容量长度的0.75配时,进行扩容
扩容增量:原容量的1倍
如hashSet的容量为16,一次扩容后是容量为32

posted @ 2020-11-22 20:41  多搞学习少搞事情  阅读(418)  评论(0编辑  收藏  举报