首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >面试刷题8:Vector ArrayList LinkedList区别?

面试刷题8:Vector ArrayList LinkedList区别?

作者头像
李福春
发布2025-07-01 16:28:52
发布2025-07-01 16:28:52
950
举报
图片
图片

高效的管理和操作数据(数据结构)是非常重要的,java提供了对应的集合框架。 我是李福春,我在准备面试,今天的问题是: Vector,ArrayList,LinkedList有什么区别? 这3个货都是List的直接子类或者间接子类,实现的是顺序集合,都提供了add,delete,index,遍历等操作。 区别是:

  • Vector是线程安全的,性能略差,自动扩容按照1倍扩容,适合按照顺序检索的场景;
  • ArrayLIst是非线程安全的,性能高,扩容基数0.5, 适合按照顺序检索的场景;
  • LinkedList是双向链表,是非线程安全的,性能高,不存在扩容,适合增加,删除的场景

Java的集合体系

图片
图片

Map没有继承Collection,不归纳到集合体系; 一些集合的实现是依赖于map来实现的; 比如TreeSet, 底层是 TreeMap , 只使用了key; 它是有序的,查询时间复杂度是常数级别,增加,删除,包含操作时间复杂度是log(n) HashSet底层实现是HashMap , 它是无顺序的,增删包含操作是常数级别的时间复杂度,但是不宜设置过大的容量; 以上的集合除了Vector都是线程非安全的。

集合的算法

主要说默认的排序算法,Arrays.sort(T[]) 当传入原始类型,使用的是双轴快速排序; 当传入对象类型,使用的是归并和二分插入综合的排序; java8提供了stream,集合也支持并行排序。可以充分发挥多核心的计算能力。

Java8对集合的改进

基于接口的defalut方法,扩展了现有集合,可以轻松的Stream化;

小结

本篇先说明了ArrayList,LinkedList,Vector的相同点,再从线程安全,底层结构,扩容,性能,适用场景做了区别对比。 在扩展回顾了java的Collection体系包含的容器,特别之处了TreeSet,HashSet的底层实现马甲。 在简单说了一下集合的默认排序算法和并行排序算法,以及集合在java8中的Stream化。

图片
图片

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-04-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 李福春持续输出 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Java的集合体系
  • 集合的算法
  • Java8对集合的改进
  • 小结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档