首页 > 代码库 > List集合
List集合
【List
元素有序(元素带角标索引)(存储顺序和取出顺序一致); 允许重复; 可以有null元素。
List又称为有序的Collection。它按对象进入的顺序保存对象,所以它能对列表中的每个元素的插入和删除位置进行精确的控制。同时,它可以保存重复的对象。
List接口是Collection接口的一个子接口。
该接口的实现类:ArrayList LinkedList Vector
一般情况下,使用哪种List接口下的实现类呢?
如果要求查询快,考虑使用ArrayList
如果要求增删快,考虑使用LinkedList
如果要求线程安全,考虑使用Vector。
ArrayList
(JDK1.2)
底层的数据结构是数组数据结构,
特点是查询速度快(因为带角标), 但是增删速度稍慢,因为当元素多时,增删一个元素则所有元素的角标都得改变。
线程不安全(不同步)。
默认长度是10,当超过长度时,按50%延长集合长度。ArrayList默认扩充为原来的1.5倍(没有提供方法来设置空间扩充的方法);
LinkedList
(JDK1.2)
底层数据结构式链表数据结构(即后面一个元素记录前一个), 双向列表,双向链表
特点:索引查询速度慢,因为每个元素只知道前面一个元素;但增删速度快,因为元素再多,增删一个,只要让其前后的元素重新相连即可。
线程不安全(不同步)。
LinkedList提供了一些方法,使得LinkedList可以被当作堆栈和队列来使用。
Vector
(JDK1.0)
底层数据结构是数组数据结构.
特点是查询和增删速度都很慢。
默认长度是10,当超过长度时,按100%延长集合长度。Vector默认扩充为原来的2倍(每次扩充空间的大小是可以设置的)。
线程安全(同步)。 (Vector由于使用了synchronized方法(线程安全),通常性能上较ArrayList差)
(Vector功能跟ArrayList功能一模一样,已被ArrayList替代)
List集合