list承諾可以将元素維護在特定的序列中。list接口在collection的基礎上添加了大量的方法,使得可以在list的中間插入和删除元素。list與 set 不同,清單通常允許重複的元素。并且存放的順序與插入的順序一緻。
list接口的常用方法有:
<code>**[add](http://www.cnblogs.com/java/util/list.html#add(e))**([e](http://www.cnblogs.com/java/util/list.html "list 中的類型參數") o)</code> :将指定對象加入到清單中。
<code>**[add](http://www.cnblogs.com/java/util/list.html#add(int, e))**(int index, [e](http://www.cnblogs.com/java/util/list.html "list 中的類型參數") element)</code> :将對象加入到指定位置處。
<code>**[addall](http://www.cnblogs.com/java/util/list.html#addall(java.util.collection))**([collection](http://www.cnblogs.com/java/util/collection.html "java.util 中的接口")<? extends [e](http://www.cnblogs.com/java/util/list.html "list 中的類型參數")> c)</code> :追加指定 collection 中的所有元素到此清單的結尾,順序是指定 collection 的疊代器傳回這些元素的順序(可選操作)。
<code>**[addall](http://www.cnblogs.com/java/util/list.html#addall(int, java.util.collection))**(int index, [collection](http://www.cnblogs.com/java/util/collection.html "java.util 中的接口")<? extends [e](http://www.cnblogs.com/java/util/list.html "list 中的類型參數")> c) :将指定 collection 中的所有元素都插入到清單中的指定位置(可選操作)。</code>
<code>**[remove](http://www.cnblogs.com/java/util/list.html#remove(int))**(int index)</code> :移除某個位置上的元素。
<code>**[remove](http://www.cnblogs.com/java/util/list.html#remove(java.lang.object))**([object](http://www.cnblogs.com/java/lang/object.html "java.lang 中的類") o)</code> : 移除清單中出現的首個指定元素。
<code>**[set](http://www.cnblogs.com/java/util/list.html#set(int, e))**(int index, [e](http://www.cnblogs.com/java/util/list.html "list 中的類型參數") element) :用指定元素替換清單中指定位置的元素。</code>
<code>**[size](http://www.cnblogs.com/java/util/list.html#size())**()</code> :傳回清單大小。
…….
常用的有兩種list類型:arraylist和linkedlist。
<a></a>
一、arraylist
arraylist擅長于随即通路元素,因為它像數組一樣提供了下标,可以根據下标直接通路,是以可以将arraylist看作可擴充自身尺寸的數組。但是在arraylist的中間插入和移除元素時較慢。
輸出結果為:
由輸出結果的1-5行可以看出,list存放元素的順序與加入的順序一緻。
二、linkedlist
linkedlist通過代價較低的在list中間進行插入和删除操作,提供了優化的順序通路。但是在随即通路方面相對比較慢。
下面舉個例子來示範linkedlist和arraylist随即通路的速度:
程式運作結果為:
很明顯arraylist随即通路比linkedlist快的多,因為linkedlist是以連結清單的現實存儲的。