Java:ArrayList、LinkedList、Vector
2016-12-16 本文已影响80人
d26168ad953a
先看看他们继承结构
Collection
------List
----LinkedList
----ArrayList
----Vector
1、ArrayList
ArrayList类的定义为:
public class ArrayList<E> extends AbstractList<E>
implements List<E> ,RandomAccess,Cloneable,Serializable
ArrayList 有如下特性:
*可变大小的数组
*非线程安全
*当更多的元素加入到ArrayList 时,其大小会动态的增长。每次增长的空间是其size的50%。
*初始容量是10
*允许null元素
2、LinkedList
LinkedList类定义:
public class LinkedList<E> extends AbstractSequentialList<E>
implements List<E>, Deque<E>, Cloneable, Serializable
LinkedList有如下特性:
*是一个双链表
*非线程安全
*在添加和删除元素元素时具有比ArrayList更好的性能
*LinkedList还实现了Queue接口(非直接实现,是通过实现Queue的子接口Deque间接实现Queue),该接口比List提供了更多方法。包括从尾部添加元素:offer(E)、返回第一个元素但不出队:peek()、返回第一个元素并出队:poll()等。
*允许null元素
由于LinkedList不同步,可以通过如下方式转化为同步的List
List list= Collections.synchronizedList(new LinkedList());
3、Vector
Vector类定义:
public class Vector<E> extends AbstractList<E>
implements List<E>, RandomAccess, Cloneable, Serializable
Vector类有如下特性:
*Vector和ArrayList类似,但属于强同步类。
*比ArrayList多了线程安全。
*默认每次动态增加空间是当前大小的2倍;如果在构造函数Vector(int initialCapacity, int capacityIncrement)中指定了capacityIncrement,每次动态增加的大小为capacityIncrement
*初始容量是10
*允许null元素
4 对比表
长度可变 | 线程安全 | 扩容倍数 | |
---|---|---|---|
ArrayList | 是 | 否 | 0.5(初始10) |
Vector | 是 | 否 | - |
ArrayList | 是 | 是 | 2(初始10) |
-