Collection接口有兩個子接口,分別是LIst與Set,今天我們討論下List接口與它的三個實現類ArrayList、LInkedList、vector
一、List接口
List的主要特徵是其元素以線性方式存儲,集合中允許存放重複對象且元素有序;
以下內容來自API
public interface List<E>extends Collection<E>
有序的 collection(也稱爲序列)。此接口的用戶可以對列表中每個元素的插入位置進行精確地控制。用戶可以根據元素的整數索引(在列表中的位置)訪問元素,並搜索列表中的元素。
與 set 不同,列表通常允許重複的元素。更確切地講,列表通常允許滿足 e1.equals(e2) 的元素對 e1 和 e2,並且如果列表本身允許 null 元素的話,通常它們允許多個 null 元素。難免有人希望通過在用戶嘗試插入重複元素時拋出運行時異常的方法來禁止重複的列表,但我們希望這種用法越少越好。
List 接口在 iterator、add、remove、equals 和 hashCode 方法的協定上加了一些其他約定,超過了 Collection 接口中指定的約定。爲方便起見,這裏也包括了其他繼承方法的聲明。
二、List的實現類
ArrayList底層採用動態數組實現,則其存取元素快,刪除插入速度滿
vector特性同ArrayList只是他是線程同步的;而Arraylist 線程不安全
LinkedList底層採用鏈表實現所以刪除插入效率高而存取效率低,另外,他還提供了L接口中沒有定義的方法,專門用於操作表頭和表尾元素,可以當作堆棧、隊列和雙向隊列使用。