有关Array, ArrayList, LinkedList, Vector的学习笔记

本文详细对比了Array数组与ArrayList在存储内容、空间大小、方法提供、线程安全及适用场景等方面的区别,帮助读者理解两者之间的差异,以便在实际编程中做出更合适的选择。

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

1、存储内容上:

Array数组可以包含基本类型和对象类型;

ArrayList却只能包含对象类型;   

Array数组在存放的时候一定是同种类型的元素;

ArrayList就不一定了,ArrayList可以存储Object。

2、空间大小上:

Array的空间大小是固定的,空间不够时也不能再次申请,所以需要事前确定合适的空间大小;

ArrayList, LinkedList, Vector都是可动态改变长度的数组,每次添加新的元素的时候都会检查内部数组的空间是否足够。(比较麻烦的地方);

ArrayList和Vector都有一个初始化的容量大小,当里面存储的元素超过这个大小时就动态的扩充存储空间,为了提高程序的效率,每次扩充容量都不是简单的扩充一个存储单元,而是一次增加多个存储单元。Vector默认扩充为原来的2倍(每次扩充空间的大小可设置),ArrayList默认扩充为原来的1.5倍(没有提供设置空间扩充的方法);

LinkedList采用双向列表来实现,对数据的索引需要从列表头开始遍历(随机访问效率低)。

3、方法提供上:
ArrayList是Array的增强版,在方法上比Array更多样化,比如添加全部addAll()、删除全部removeAll()、返回迭代器iterator()等。

4、线程安全上:

没有一个ArrayList的方法是同步的;

LinkedList也是非线程安全的容器;

Vector的绝大多数方法都是直接或间接同步的。

5、适用场景上:
如果想要保存一些在整个程序运行期间都会存在而且不变的数据,可以将它们放进一个全局数组里;

如果只是想要以数组的形式保存数据,而不对数据进行增加等操作(对数据的主要操作是索引或只在末端添加、删除元素),只是为了方便进行查找,使用ArrayList效率比较高;

如果对数据的主要操作是指定位置的插入或删除,使用LinkedList效率比较高(插入时不需要对数据进行移动);

如果多个线程会同时访问该容器,使用Vector比较安全。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值