LinkedList、ArrayList、 Vector的区别和详解

本文详细对比了ArrayList与LinkedList两种数据结构的特点与应用场景。ArrayList基于动态数组实现,支持null元素,适用于随机访问,但增删操作效率较低。LinkedList采用链表结构,增删操作效率高,但不支持快速随机访问。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ArrayList:

1.数组队列,是基于动态数组的数据结构,实现了可变大小的数组,允许元素null。
2.每个ArrayList实例都有一个容量,ArrayList创建对象的时候,会有一个带有参数的构造器,而此参数就是ArrayList的长度,默认长度为10,当数据增加时,
原来的长度不够用时,ArrayList就会实现自增长,将会创建一个更大的数组,数组长度为newLength = oldLength + oldLength/2;
然后将之前数组的元素拷贝到新的数组中。
3.ArrayList是基于数组实现的,而数组是一块连续的内存空间,如果在数组的任意位置插入元素,必然导致在该位置后的所有元素需要重新排列,
因此,
增删改的效率相对会比较低,对于增删改的时间是和数组的大小成正比的。

4.ArrayList对于随机查询效率高。

5.ArrayList非同步的。

6.ArrayList支持序列化。

l     LinkedList:

1.基于链表的数据结构,不需要维护数组容量的大小。

2.元素的增删改都会分配或操作内部每个元素对应的每个Entry对象,时间消耗是固定的所以效率相对较高。

       3.但是linkedlist查询效率不高,因为对LinkedList进行随机访问时,总会进行一次列表的遍历操作,导致耗时很久,需要移动指针,所以对一个LinkedList做随机访问所消耗的时间与这个list的大小是成比例的。

4.也是非同步的。

Vector

1.同步的,线程安全,方法函数都是synchronized的。
2.Vector默认初始容量为10,每次增长为原长度的一倍。
3.不支持序列化。
4.ArrayList有3个构造函数,而Vector有4个构造函数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值