首页 > 代码库 > 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集合