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
本文深入探讨了Java集合框架中ArrayList和Vector的区别,以及它们各自的扩容策略。ArrayList以其非线程安全但快速查询的特性被广泛使用,而Vector则保证线程安全但牺牲了性能。同时,我们还分析了HashSet的实现原理,它是基于HashMap实现的无序、不可重复的集合,其扩容策略和HashMap一致。HashMap的默认容量和扩容规则也进行了详细阐述。

被折叠的 条评论
为什么被折叠?



