ArrayList,Vector,LinkedList的特性与特征

ArrayList,Vector,LinkedList的特性与特征

ArrayList,Vector LinkedList 都在java.util包中,均可伸缩数组,即可动态改变长度的数组
ArrayList和Vector都是基于存储元素的Object[] array来实现的,他们会在内存中开辟一块连续的空间来存储,由于数据存储是连续的,因此他们支持用序号(下标)来访问元素,同时索引数据的速度比较快,但是在插入元素时需要移动容器中的元素,所以对数据的插入操作执行的比较慢。
ArrayList和Vector最大的区别就是Synchronization同步的使用,没有一个ArrayList的方法是同步的,而Vector绝大数方法都是直接或者间接同步的,所以Vector是线程安全的,ArrayList不是线程安全的,正是Vector提供了线程安全的机制,其性能上也要略微逊于ArrayList。
LinkedList采用的双向列表来实现的,对数据的索引需要从列表头开始遍历,因此用于随即访问效率比较低,但是插入元素时不需要对数据进行移动,因此插入效率比较高。同时他是非线程安全的容器。
在实际应用中,我们该如何选择这三种容器呢?
当对数据的主要操作为索引或只在集合末端增减,删除元素时,用ArrayList或Vector效率比较高,当对数据的操作主要为指定位置的插入或者删除操作时,使用LinkedList效率比较高,当在多线程中使用容器时,选用Vector比较安全。

1、ArrayList : 是非线程安全的容器,在查询或者在末尾插入删除的情况下,建议使用。
2、Vector:是线程安全的容器,在查询或者在末尾端插入删除数据时,或在多线程中。建议使用。
3、LinkedList:是非线程安全的容器,当数据要求在指定的位置的插入删除时,建议使用。

PS:在随即访问的场合中,推荐使用顺序表 时间复杂度为O(1) ,而列表的随即访问操作的时间复杂度是O(n)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值