Java中 ArrayList、LinkedList、Vector之间的区别

ArrayList、LinkedList、Vector之间的区别

1、同步性 。ArrayList、LinkedList是不同步的,而Vector是同步的。ArrayList、LinkedList中的对象不是线程安全的,而Vector中的对象是线程安全的。由于同步会影响执行的效率,所以在不需要线程安全的集合中,避免使用Vector可以避免由于同步带来的不必要的性能开销。ArrayList和LinkedList之间,LinkedList单独具有addFirst()、addLast()、getFirst()、getLast()、removeFirst()、removeLast()方法,这些方法使得LinkedList可以作为堆栈、队列和双向队列来使用。
2、数据增长。从内部实现机制来讲ArrayList和Vector都是使用数组来控制集合中的
对象。当你向这两种类型中增加元素的时候,如果元素的数目超出了内部数组目前的长度
,它们都需要扩展内部数组的长度。Vector在缺省情况下自动增长原来一倍的数组长度,
而ArrayList增长原来的50%,所以最后你获得的这个集合所占的空间总是比你实际需要
的要大。所以如果你要在集合中保存大量的数据那么使用Vector有一些优势,因为可以
通过设置集合的初始化大小来避免不必要的资源开销。
3、查找、删除、插入 对象的效率。ArrayList和Vector查找一个元素、或者是在末尾插入或者删除一个元素,他的时间为O(1)。但是在其它位置插入或者删除第i个元素,由于其后的元素都要进行位移操作,因此元素插入或者删除的时间花费与元素的位置呈线性相关:O(n-i)。LinkedList在插入、删除任何位置的元素的时间花费都为O(1),但是在查找第i个元素时的时间花费就为O(i)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值