ArrayList、Vector、LinkedList的异同点

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weixin_39651041/article/details/79952299

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较为安全。

阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页