1、ArrayList
public class ArrayList<E> extends AbstractList<E>
implements List<E>, RandomAccess, Cloneable, java.io.Serializable
实现了List接口,内部是一个数组Object[] elementData,当数组空间不足的时候,空间默认增加为原来的50%
2、Vector
public class Vector<E>
extends AbstractList<E>
implements List<E>, RandomAccess, Cloneable, java.io.Serializable
内部是一个数组Object[] elementData,实现了List接口,是线程安全的,修改数组的方法前使用了关键字synchronized保证线程安全,当数组空间不足的时候,空间默认增加为原来的一半
3、LinkedList
public class LinkedList<E>
extends AbstractSequentialList<E>
implements List<E>, Deque<E>, Cloneable, java.io.Serializable
实现了List接口,内部是一个双向链表transient Node<E> first;transient Node<E> last,插入和删除效率比ArrayList和Vector高,查询速度较慢
如果经常执行插入和删除操作,应该使用LinkedList,如果经常执行查询操作,应该使用ArrayList和Vector,如果程序本事是线程安全的,应该使用ArrayList,但是如果存在并发访问的可能,应该使用Vector或者使用ArrayList,在程序中保证互斥访问