Interface List 在Java.util包中,繼承自Collection,Iterable。
實現List接口的類有以下幾種
AbstractList,AbstractSequentialList,ArrayList,AttributeList,CopyOnWriteArrayList,LinkedList,RoleList,RoleUnresolvedList,Stack,Vector
其中常用的有ArrayList,LinkedList,Vector
List 是有序的,元素可以重復
ArrayList以數組的形式存儲數據,查找快,增刪慢
LinkList以鏈表的形式存儲數據,查找慢,增刪快
Vector和ArrayList類似,區別是線程安全,查找刪減效率低。
常用方法:
boolean ? ??add(E?e) ?在List的尾部加入元素
void ? ?add(int index,Eelement) ? 指定位置加入元素
boolean? addAll(CollectionE> c)/addAll(int?index,CollectionE>?c) ? ?加入集合中的所有元素
E? ? ??get(int index) ? ?返回index處的值
E? ? ??remove(int index) ? 刪除index處的值
E? ? ? set(int index,Eelement) ? 替換index處的值
int ? ? size() ? 返回List中的元素個數
其中LinkList中有幾個特別的方法
void ??addFirst(E??e) ? 在list首部插入
void ? ?addLast(E??e) ?在list尾部插入
E ? ? ? ? peek() ?檢索list的第一個元素,但不刪除
E? ? ? ? ? poll()? ? 檢索list的第一個元素,并刪除
E? ? ? ? ? pop() ? 從此列表中的堆棧中彈出一個元素。
void? ? ? push(E? e)? 將元素推送到由此列表表示的堆棧上。
用法
List接口的實現類常用的就是ArrayList和LinkedList,使用這兩個類當然要先實例化:
List<E> ?list = new ArrayList<E>();
List<E>? list = new LinkedList<E>();
這里的List當然可以替換成ArrayList和LinkedList,我覺得應該是 里氏替換原則:所有引用基類的地方必須能透明地使用其子類的對象。
然后通過list實例來調用以上方法即可。
遍歷List的三個方法
foreach ? ?for(String s : list){ ?}
for循環 ? ?for(int i=0;i<list.length;i++){ ?}
Iterator迭代器? 首先獲取Iterator實例? Iterator it = list.iterator()? 然后在while(it.hasNext()){ ? }體內執行it.next()
總結
對List接口作了簡要的介紹,一起學習,一起成長。