ArrayList、HashSet、HashMap的初始化长度与扩容

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

全部评论

相关推荐

07-02 10:39
门头沟学院 Java
Steven267:说点真实的,都要秋招了,还没有实习,早干嘛去了,本来学历就差,现在知道急了,而且你这个简历完全可以写成一页,劣势太大了,建议转测试
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-23 13:41
求求各位大佬
gtgt..:硕士怎么会把简历写成这样
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务