Java学习五分钟系列,目的是为让大家在短时间内搞清楚一项技术的概念、优缺点和适用场景,想要深入的了解,还需要投入更多的时间。

Java的集合类,值得我们深入的学习,建议大家有时间的话,可以阅读一下源码;并且可以对比一下每个JDK版本中,集合类源码的变化。

今天我带大家简单对比一下Vector、ArrayList、LinkedList。

相同之处

三者都实现了集合框架中的 List接口,它们都是【有序集合】。

它们有些功能也比较相似,例如都提供了按照位置进行查询、新增或者删除,提供了迭代器以遍历其内容等。

不同之处

  • Vector :是基于数组实现的,可以根据需要自动扩展容量,当数组满了,会创建新的数组,并Copy原来的数据到新的数组。Vector是线程安全的,如果不考虑线程安全问题,建议不要使用。
  • ArrayList:也是基于数组实现的,也可以动态地调整容量,和Vector不同的是,Vector扩容的时候翻倍,ArrayList则是(默认)增加50%。ArrayList不是线程安全的,所以性能要高。
  • LinkedList:顾名思义,双向链表,不需要像Vector、ArrayList那样调整容量;LinkedList也不是线程安全的。

优缺点及适用场景

  • Vector和ArrayList本质都是动态数组,所以各个元素都是按照顺序存储的,所以很适合随机访问的场景,可以快速的定位到某一个元素。但是在插入和删除的时候,除非是尾部元素,在操作其他元素的时候,性能往往很差(因为要移动其他元素);
  • LinkedList在插入和删除时,效率很高,但是随机访问的性能会比Vector和ArrayList差;
  • 所以在开发过程中,要根据场景选择使用,操作是偏向于查询,还是偏向于修改和删除;是否要求线程安全。

我将持续分享Java开发、架构设计、程序员职业发展等方面的见解,希望能得到你的关注。

vector 插入_Java学习五分钟系列:对比Vector、ArrayList、LinkedList相关推荐

  1. java分布式架构_Java学习五分钟系列:从单体架构转向分布式架构的难点

    Java学习五分钟系列,目的是为让大家在短时间内搞清楚一项技术的概念.优缺点和适用场景,想要深入的了解,还需要投入更多的时间. 分布式架构和单体应用架构相比,可以充分利用多机器的性能优势,提高了系统的 ...

  2. 《sed的流艺术之四》-linux命令五分钟系列之二十四

    [正文开始] 上文接<sed的流艺术之三>-linux命令五分钟系列之二十三 例十 如果设定了很多-e的command,它们的执行顺序是怎样的呢? [rocrocket@rocrocket ...

  3. 《神探tcpdump第五招》-linux命令五分钟系列之三十九

    == [系列文章] <神探tcpdump第一招>-linux命令五分钟系列之三十五 <神探tcpdump第二招>-linux命令五分钟系列之三十六 <神探tcpdump第 ...

  4. 《gcc五分钟系列》第六节:编译期符号检查

    <gcc五分钟系列>第六节:编译期符号检查 上一节,我们说了从源文件到目标文件的编译过程.这一节,我想讨论一下编译期符号检查的问题.     请原谅我实在不知道如何翻译"refe ...

  5. 《gcc五分钟系列》基础部分结束

    <gcc五分钟系列>基础部分结束 我把常用的编译选项都已经介绍完了.     本系列打算休息一段时间. 转载于:https://blog.51cto.com/elephantliu/828 ...

  6. python每天学习30分钟系列

    本篇博客记录的是从2021/6/17起,博主将每天学习30分钟的python,这些博客记录的都是一些比较简单的,后期再不断加强巩固,不想把时间浪费在一些细节上,6个月后,自己独立开发一个功能程序(数据 ...

  7. 语言列表导出xlxs_学习五分钟,掌握一种新语言。

    有没有一种语言,既实用还能够短时间内学会并应用起来?当然有.小阳今天要教给大家的是一种标记语言--Markdown. 经常上网的你,一定有注意到很多网页排版整齐.简洁优美,各级标题区分明显,文章逻辑清 ...

  8. 《神探tcpdump第四招》-linux命令五分钟系列之三十八

    == 本文会是"选项内容"的最后一期讲解,主要会讲讲-w和-r两个选项.tcpdump的选项很多,多达50个,其他我没有涉及的选项,还是要大家自己通过man tcpdump的方式来 ...

  9. caffe图像分类教程_跟我上手深度学习: 五分钟尝试第一个深度学习(Caffe)训练和图像分类(详细图文步骤)...

    申请深度学习的开发环境 Supervessel超能云(www.ptopenlab.com)上可以免费申请深度学习的开发环境.用户可以免费注册一个用户帐号,无须任何信用卡信息,就可以申请. 申请了用户帐 ...

最新文章

  1. IDA-3D:基于立体视觉的深度感知3D目标检测网络(CVPR2020)
  2. 我的学习之路_第十八章_SQL语句
  3. Python变量使用前必须先声明,并且一旦声明就不能在当前作用域内改变其类型————(错)
  4. k8s组件说明:api server
  5. faceapp怎么合成未来宝宝照片_宝宝出生后,爸爸们应该如何宣布喜讯,各种官宣文案孕妈赶紧收藏...
  6. github上java_GitHub上Java的Bloom Bloom实现
  7. Docker Compose 简介、安装、初步体验
  8. 大学mysql期末试题_四川大学数据库系统期末试题2014-2015.doc
  9. Spark Streaming 和 Flink 的对比以及详细描述,图文对比、代码
  10. aix oracle调整逻辑卷的大小,AIX上增加逻辑卷时报错误0516-787 extendlv: Maximum allocation for logical volume(示例代码)...
  11. 蓝桥杯2019年第十届C/C++省赛A组第三题-最大降雨量
  12. mysql高可用架构 - MHA简介-01
  13. 聊聊工作与生活的平衡
  14. 4用计算机显示内存不足,电脑提示内存不足的解决方法总汇
  15. 【八方位云台控制器】
  16. lomboz eclipse怎么连接oracle10,Lomboz插件的安装与配置[Eclipse 3.0,3.1.x与3.2.x版本]第一部分...
  17. Spring之事务传播行为
  18. mpl代表什么_西方经济学中MPL,APL,MPK分别是什么意思
  19. 第十一届蓝桥杯b组(10月真题)
  20. QMediaplayer详解以及简易音乐播放实现

热门文章

  1. IntelliJ IDEA 2020.1 正式发布,15 项重大特性、官方支持中文了! | 原力计划
  2. 清华周界详解《基于图神经网络的事实验证》 | 百万人学 AI
  3. Wi-Fi 6 「破茧成蝶」,高通全面布局端到端最佳解决方案
  4. RS 纠删码为什么可以提高分布式存储可靠性?| 原力计划
  5. 如何用 CNN 玩转 AlphaGo 版的五子棋?
  6. LG 出售中国总部大楼;苹果延长疫情期间 Apple 设备保修期;Linux 5.6 新特性 | 极客头条...
  7. 2020 年,大火的 Python 和 JavaScript 是否会被取而代之?
  8. 我有一辆机器人小车,怎么让它跑起来,还会避障、目标跟踪、路径规划?
  9. 如何成为一枝独秀的技术领导者?
  10. 高薪、稀缺人才必备哪些技能?BDTC大会告诉你,附最新议程!