ArrayList、Vector、LinkedList的异同点

ArrayList、Vector和LinkedList类

相同点:

  1. 都在java.util包中;
  2. 都是可伸缩数组,即可以动态改变长度的数组;
  3. 都是List接口的实现类,(List中)元素存放有序,可重复;

不同点:

  1. ArrayList和Vector底层是使用数组实现的;LinkedList底层使用双向循环链表数据结构实现;
  2. ArrayList和Vector索引数据速度快,增删元素速度慢;LinkedList增删元素速度快,索引速度慢;
  3. Vector是线程安全的,ArrayList和LinkedList线程不安全;
  4. ArrayList和Vector都有一个初始化的容量大小,默认为10,存储元素个数超过初始容量时,ArrayList默认扩充为原来的1.5倍+1,Vector默认扩充为原来的2倍;LinkedList更节省空间。

ArrayList类的声明

public class ArrayList<E> extends AbstractList<E>
        implements List<E>, RandomAccess, Cloneable, java.io.Serializable
{
……
}

Vector类的声明

public class Vector<E>
    extends AbstractList<E>
    implements List<E>, RandomAccess, Cloneable, java.io.Serializable
{
……
}

LinkedList类的声明

public class LinkedList<E>
    extends AbstractSequentialList<E>
    implements List<E>, Deque<E>, Cloneable, java.io.Serializable
{
……
}

使用场合

  1. 当数据的主要操作为索引或只在集合的末端增加、删除元素,使用ArrayList或Vector效率比较高;
  2. 当对数据的操作主要以指定位置的插入或删除操作,使用LinkedList效率比较高;
  3. 当在多线程中使用容器时,选用Vector较为安全。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值