ArrayList和Vector及LinkedList的区别

Java中对比Vector, ArrayList, LinkedList的区别 创作不易,请大家多多支持。我们在日常的工作中,能够高效地管理和操作数据是非常重要的。由于每个编程语言支持的数据结构不尽相同,比如我最早学习的 C语言,需要自己实现很多基础数据结构,管理和操作会比较麻烦。相比之下,Java 则要方便的多,针对通用场景的需求,Java提供了强大的集合框架,大大提高了开发者的生产力。今天我要问你的是有关集合框架方面的问题,对比Vector、ArrayList、LinkedList 有何区别? 阅读详情

1.ArrayList和Vector的区别

第一句话:ArrayList和Vector底层都是数组实现的,初始容量都为10;在ArrayList的底层,是通过定义一个DEFAULT_CAPACITY的常量来指定的,而Vector的底层,是直接在空参构造中,通过写死了一个this(10)来指定的;

第二句话:Vector大部分方法的底层实现,都加了 synchronized关键字,所以Vector是线程同步的,而 ArrayList不是;

第三句话:在查看API时,发现Vector有4个构造方法,比 ArrayList多了一个。而多的这个构造方法,是跟扩容有关的。ArrayList默认的扩容,在JDK1.6时,是按照新容量 =(原容量*3)/2+1来计算的,大约50%左右;而在JDK1.7以后,是按照新容量 = 原容量 +(原容量 >> 1)来计算的,大约也在50%左右,所以都不是很多资料上说的就是50%,同时由于位运算的速度比快,所以ArrayList在JDK1.7之后效率更高,也可以看出来,;而在Vector中,默认情况下,是100%增长的,但是我们可以通过比ArrayList多的那个构造方法,来指定它增容的大小。

2.ArrayList与LinkedList

第一句话:ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构,它继承于AbstractSequentialList的双向链表,由于AbstractSequentialList 实现了get(i)、set()、add() 和 remove()这些骨干性函数,这也降低了List接口的复杂程度。

第二句话:ArrayList与LinkedList都是不是同步的。如果多个线程同时访问一个链接列表,而其中至少一个线程从结构上修改了该列表,则它必须保持外部同步。同步的方法就是使用Collections.synchronizedList(Collection<T> c)来“包装”该列表。

第三句话:对于随机访问get和set,ArrayList绝对优于LinkedList,因为从源码可以看出,ArrayList想要get(int index)元素时,直接返回index位置上的元素;而LinkedList需要通过for循环进行查找,虽然LinkedList已经在查找方法上做了优化,比如index < size / 2,则从左边开始查找,反之从右边开始查找,但是还是比ArrayList(随机查找)要慢。

第四句话:从源码来看,ArrayList想要在指定位置插入或删除元素时,主要耗时的是System.arraycopy动作,会移动index后面所有的元素;LinkedList主耗时的是要先通过for循环找到index,然后直接插入或删除。这就导致了两者并非一定谁快谁慢! 

Vector,ArrayList,LinkedList 的区别是什么? 前言:这个问题主要是考察集合框架的问题,主要考察三者之间设计的区别,以及使用时如何抉择。 Vector线程同步(安全),ArrayList、LinkedList线程不同步(不安全) Vector是java早期提供的线程安全的动态数组;Arraylist也是动态数组,但不是线程安全的;而LinkedList与前者不同 ,LinkedList是使用双向链表存储的,也不是线程安全的。 Vector是因为是线程安全的,所以在使用时性能要比ArrayList要差。 Vector和ArrayList可以根据需要自动增 阅读详情

相关推荐

Vector、ArrayList、LinkedList 有何区别?

如果面试问道 Vector、ArrayList、LinkedList 有何区别? 你会如何回答呢? 我的回答 这三者都是实现集合框架中的 List,也就是所谓的有序集合,因此具体功能也比较近似,比如都提供按照位置进行定位、添加或者删除的操作,都提供迭代器以遍历其内容等。但因为具体的设计区别,在行为、性能、线程安全等方面,表现又有很大不同。 Vector 是 Java 早期提供的线程安全的动态数组,如果不需要线程安全,并不建议选择,毕竟同步是有额外开销的。Vector 内部是使用对象数组来保存数据,可以根

qq_38304320的博客 284

Vector、ArrayList、LinkedList的区别

文章目录Vector、ArrayList、LinkedList的区别不同容器类型适合的应用场景数组和链表的对比Reference Vector、ArrayList、LinkedList的区别 这三者都是实现集合框架中的List,也就是所谓的有序集合。 Vector是Java早期提供的线程安全的动态数组,如果不需要线程安全,并不建议选择,毕竟同步是有额外开销的。Vector内部是使用对象数组来保存数据,可以根据需要自动的增加容量,当数组已满时,会创建新的数组,并拷贝原有数组数据。 ArrayList是应用.

xylitolz的博客 5145

别再瞎改注册表了!实测Win10/Win11远程桌面60帧的正确姿势(附ToDesk对比)

本文深入解析Windows远程桌面60帧优化的科学方法,揭示常见误区并提供实测有效的解决方案。从版本差异到硬件加速,再到第三方工具对比(如ToDesk),帮助用户避开无效的注册表修改,实现流畅的远程桌面体验。

weixin_33738555的博客 341

ArrayList和Array、LinkedList、Vector 间的区别

内部基于动态数组实现,比 (静态数组) 使用起来更加灵活:以下是两者之间的对比:ArrayList: Array: 二、ArrayList 和 LinkedList 的区别 从以下几个方面来比较:我们在项目中一般是不会使用到 的,需要用到 的场景几乎都可以使用 来代替,并且,性能通常会更好! 补充:双向链表 和 双向循环链表双向链表: 包含两个指针,一个 prev 指向前一个节点,一个 next 指向后一个节点。 双向循环链表: 最后一个节点的 next 指向 head,而 head 的

午夜后是黎明,风雨后是骄阳 1497

奇迹mu服务端DATA文件解析:从基础配置到高级玩法

本文深入解析奇迹MU服务端DATA文件的核心配置与高级玩法,涵盖基础设置、怪物AI系统、技能战斗机制、副本事件管理及物品商城定制。通过详细示例和实用技巧,帮助开发者掌握从经验倍率调整到动态事件触发的全方位配置方法,实现个性化的私服搭建与运营。

weixin_29254673的博客 528

LM358实战:手把手教你搭建电流检测电路(附电阻选型计算)

本文详细解析了使用LM358运算放大器搭建电流检测电路的全过程,包括基础原理、采样电阻选型、放大电路设计及PCB布局技巧。通过实战案例和精确计算,帮助工程师快速掌握低成本、高精度的电流检测方案,适用于电源管理、电机控制等多种应用场景。

weixin_30872157的博客 446

ArrayList和LinkedList、Vector的区别

1 ArrayList和LinkedList的区别: (1)相同点: LinkedeList和ArrayList都实现了List接口。 ArrayList和LinkedList是两个集合类,用于存储一系列的对象引用(references)。 (2)不同点: ArrayList底层的实现数组,而LinkedList是双向链表。 ArrayList进行随机访问所消耗的时间是固定的,因此随机访问时效率比较高。 LinkedList是不支持快速的随机访问的,但是在插入删除时效率比较高。 2 ArrayLi.

长不大的大灰狼 7691

【S32K】S32K144入门笔记(3) SPI(lpspi组件)

0. 引言 与第二篇can对应,第三篇本来想写lin的,毕竟都是车身上常用的总线。但是lin比较麻烦,所以先拖后一下,先把SPI记录一下。 SPI在我们的系统架构中是S32K和ADAS之间做数据传输用的,毕竟速率够高,数据量能传的比较大。 1. 准备 1.1 SPI基础知识 1.2 开发环境 1.2.1 软件开发环境 1.2.2 硬件环境 SPI 2. Demo ...

YoYo的桃子树 2万+

ArrayList、LinkedList和Vector的区别

1.三者之间的关系 2.ArrayList和LinkedList之间的区别 (1)相同点 ArrayList和LinkedList都继承了AbstractList抽象类,都实现了Lits接口

Hello World 3243

基于Python的电商平台商品信息爬取与价格监控系统设计与实现

本文详细介绍了一个基于Python的电商平台商品信息爬取与价格监控系统的设计与实现。系统采用最新的Python爬虫技术栈,包括Scrapy框架、Selenium自动化测试工具、BeautifulSoup解析库等,实现了对主流电商平台商品信息的自动化采集、存储、分析和可视化展示。文章从系统架构设计、关键技术实现、核心代码解析等方面进行了全面阐述,并提供了完整的代码实现。该系统不仅适用于毕业设计,也可作为商业价格监控系统的原型。关键词:Python爬虫;电商数据采集;价格监控;Scrapy;Selenium;

2201_76125261的博客 963

单片机设计具备断电记忆功能的计时器

本文介绍了如何设计一款具备断电记忆功能的计时器,利用单片机和EEPROM存储器实现了计时器值的保存和恢复。当然,在实际的设计中还需要考虑其他因素,如电源管理、时钟精度等,以确保计时器的正常运行和准确性。选择合适的单片机:在设计计时器时,我们需要选择一款具备存储功能的单片机,以便在断电后能够保存计时器的状态。可以优化显示方式,使用更加直观的界面来展示计时器的值;函数中,我们首先从 EEPROM 中读取计时器的初始值,然后在一个无限循环中每秒钟增加计时器的值,并将新的值写入 EEPROM 中。

RlDart的博客 1093

ArrayList 、 LinkedList、Vector的区别

ArrayList 、 LinkedList、Vector的区别如下: 结构 是否线程安全 效率 ArrayList 动态数组 否 遍历查找快,插入删除慢 LinkedList 双向链表 否 插入删除快,遍历查找慢 Vector 动态数组 是 遍历查找快,插入删除慢 ArrayList ArrayList 是动态数组,动态的意思是可以随时增加数组长度,众所周知,普通数组的长度是定死的,想要增加长度,就必须...

叶新东老师的博客 1903

javafx结合Scene Builder自定义fxml实现漂亮的登录界面、自定义最小化、关闭按钮

本节主要介绍了如何结合Scene Builder工具来制作一个好看又漂亮的登录界面,以及介绍了如何在程序中调用生成界面文件fxml文件,如何获取到fxml文件中的组件等,并演示登录、最小化和关闭等功能。

c1007857613的专栏 5220

ArrayList,LinkedList和Vector区别

ArrayList,LinkedList和Vector区别 三者的区别(简单描述) 1.三者的都是List接口的实现类,如下图所示 2.ArrayList作为List接口的主要实现类,它是线程不安全的,效率高,底层使用Object[] elementData存储。 3.LinkedList对于频繁插入、删除操作,使用此类效率比ArrayList高,底层使用双向链表存储。 4.Vector作为List接口的古老实现类,它是线程不安全的,效率低,底层使用Object[] elementData存储 Array

weixin_48276298的博客 330

jieba分词

jieba

sikh_0529的博客 1万+

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Vector、ArrayList和LinkedList有什么区别

1.基本区别:三个类都实现了List接口,都是有序集合,数据是允许重复的;ArrayList 和Vector都是基于数组实现存储的,集合中的元素的位置都是有顺序即连续的;LinkedList是基于双向链表实现存储的,集合中的元素的位置是不连续的 2.性能区别:Vector和ArrayList底层实现原理一致,但是Vector是线程安全的,因此性能比ArrayList差很多;LinkedList相比于集合Vector和ArrayList在插入,修改,删除等操作上速度较快,但是随机访问的性能较差 3.安全区

CentOS 2556

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

区别 ArrayList LinkedList Vector

ArrayList      LinkedList     Vector   区别 1.这三个类都实现了List接口(List接口继承了Collection接口),但是也有以下区别 ArrayList和Vector 1>.他们都是有序集合,即存储在这两个集合中的元素的位置都是有顺序即连续的,相当于一种动态的数组,我们以后可以按位置索引号取出某个元素,,并且其中的数据是允许重复的。

菱萧 3907

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

ArrayList与LinkedList、Vector的区别

(3)性能:ArrayList支持随机访问,查询快,增删慢,查询的时间复杂度为O(1),插入和删除的时间复杂度为O(n),因为对插入和删除位置后面的元素进行移动位置,以保证内存的连续性。(4)初始容量和扩容:ArrayList和Vector的默认初始容量都是10,但是扩容时,ArrayList容量会增长为原来的1.5倍,而Vector的容量会增长为原来的2倍。不支持随机访问,查询慢,增删快,查询的时间复杂度为O(n),插入和删除的时间复杂度为O(1)

愿你我都能实现自己的梦想 698

List里ArrayList与LinkedList以及Vector之间的区别

List里ArrayList与LinkedList以及Vector之间的区别 ArrayList 基底是一个可改变大小的数组.当更多的元素加入到ArrayList中时,其大小将会动态地增长.初始容量是十;内部的元素可以直接通过get与set方法进行访问,因为ArrayList本质上就是一个数组.不同步,因此线程不安全 ;ArrayList是一个动态数组,也是我们最常用的集合。它允许任何符合规则的元...

Zp_akl的博客 260

Java基础:ArrayList、LinkedList、Vector的区别

这篇文章主要介绍了ArrayList、LinkedList、Vector详细教程,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下。放假在家里休息,闲来无事,想巩固巩固自己的基础知识。Java基础这个我会一直更新的,希望大家关注 收藏 点赞。

weixin_42188778的博客 1468

【Java】ArrayList、Vector、Stack和LinkedList的区别

继承关系 ArrayList继承自AbstractList public class ArrayList&lt;E&gt; extends AbstractList&lt;E&gt; implements List&lt;E&gt;, RandomAccess, Cloneable, java.io.Serializable Vector继承自AbstractList ...

widiot的博客 3206

java中ArrayList、LinkedList、Vector的区别

java中ArrayList、LinkedList、Vector的区别 ArrayList、LinkedList、Vector这三个类都实现了List接口。ArrayList是一个可以处理变长数组的类型,可以存放任意类型的对象。ArrayList的所有方法都是默认在单一线程下进行的,因此ArrayList不具有线程...

张康的博客 975

arraylist,与linkedlist:vector区别

public class ArrayList&amp;amp;amp;lt;E&amp;amp;amp;gt; extends AbstractList&amp;amp;amp;lt;E&amp;amp;amp;gt; implements List&amp;amp;amp;lt;E&amp;amp;amp;gt;, RandomAccess, Cloneable, java.io.Serializable { private s

火星男孩的分享空间 327

ArrayList、LinkedList、Vector区别总结与源码浅析

ArrayList、LinkedList、Vector 区别总结与源码浅析 写在前面,本文为笔者学习整理总结,因此,若有任何不严谨或错误之处,还望不吝指教! 本文内容: 一、区别总结 二、源码浅析 1. ArrayList 2. LinkedList 3. Vector 一、区别总结 ArrayList,底层采用数组构建,因此决定了擅随机访问,弱...

大爷没钱 402

ArrayList、LinkedList、Vector 的区别。

ArrayList、LinkedList、Vector 的区别。 ArrayList,Vector 底层是由数组实现,LinkedList 底层是由双线链表实现,从底层的实现可以得出它们的性能问题, ArrayList,Vector 插入速度相对较慢,查询速度相对较快,而LinkedList 插入速度较快,而查询速度较慢。再者由于 Vevtor 使用了线程安全锁,所以ArrayList 的运行效率高于 Vector。 ...

weixin_46503633的博客 149

Vector、ArrayList、LinkedList 有什么区别?

这个问题主要是考察集合框架的问题,主要考察三者之间的设计区别,以及使用时如何选择。然后继续可能考察排序算法的问题。 主要区别: Vector是java早期提供的线程安全的动态数组;ArrayList也是动态数组,但不是线程安全的;而LinkedList与前者不同,LinkedList是使用双向链表存储的,也不是线程安全的。 Vector因为是线程安全的,所以在使用时性能比ArrayList要...

兴国-为梦想而战 1082
上一篇: 微信开发之一键修改群聊备注的技术实现
下一篇: 微信开发之一键删除朋友圈评论的技术实现
普通网友
博客等级 码龄4年 283粉丝 122原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值