上一篇部落格《java集合架構之set接口實作類》中介紹了set接口的相關實作類,這一篇将介紹list接口的實作類。
arraylist有點類似于數組,相比較于數組而言,arraylist可以動态的更改元素個數,相對于數組較為靈活。
每個 arraylist 執行個體都有一個容量。該容量是指用來存儲清單元素的數組的大小。它總是至少等于清單的大小。随着向 arraylist 中不斷添加元素,其容量也自動增長。并未指定增長政策的細節,因為這不隻是添加元素會帶來分攤固定時間開銷那樣簡單。
在添加大量元素前,應用程式可以使用 ensurecapacity 操作來增加 arraylist 執行個體的容量。這可以減少遞增式再配置設定的數量。
方法名
說明
arraylist()
構造一個初始容量為 10 的空清單
arraylist(collection< ? extends e> c)
構造一個包含指定 collection 的元素的清單,這些元素是按照該 collection的疊代器傳回它們的順序排列的
arraylist(int initialcapacity)
構造一個具有指定初始容量的空清單
傳回值
boolean
add(e e)
将指定的元素添加到此清單的尾部
void
add(int index, e element)
将指定的元素插入此清單中的指定位置
addall(collection c)
按照指定 collection 的疊代器所傳回的元素順序,将該collection中的所有元素添加到此清單的尾部
addall(int index, collection c)
從指定的位置開始,将指定 collection 中的所有元素插入到此清單中
clear()
移除此清單中的所有元素
object
clone()
傳回此 arraylist 執行個體的淺表副本
contains(object o)
如果此清單中包含指定的元素,則傳回 true
ensurecapacity(int mincapacity)
如有必要,增加此 arraylist 執行個體的容量,以確定它至少能夠容納最小容量參數所指定的元素數
e
get(int index)
傳回此清單中指定位置上的元素
int
indexof(object o)
傳回此清單中首次出現的指定元素的索引,或如果此清單不包含元素,則傳回 -1
isempty()
如果此清單中沒有元素,則傳回 true
lastindexof(object o)
傳回此清單中最後一次出現的指定元素的索引,或如果此清單不包含索引,則傳回 -1
remove(int index)
移除此清單中指定位置上的元素
remove(object o)
移除此清單中首次出現的指定元素(如果存在)
protected void
removerange(int fromindex, int toindex)
移除清單中索引在 fromindex(包括)和 toindex(不包括)之間的所有元素
set(int index, e element)
用指定的元素替代此清單中指定位置上的元素
size()
傳回此清單中的元素數
object[]
toarray()
按适當順序(從第一個到最後一個元素)傳回包含此清單中所有元素的數組
< t > t[]
toarray(t[] a)
按适當順序(從第一個到最後一個元素)傳回包含此清單中所有元素的數組;傳回數組的運作時類型是指定數組的運作時類型
trimtosize()
将此 arraylist 執行個體的容量調整為清單的目前大小
vector和arraylist的差別在于vector是線程同步的。
vector 類可以實作可增長的對象數組。與數組一樣,它包含可以使用整數索引進行通路的元件。但是,vector 的大小可以根據需要增大或縮小,以适應建立 vector 後進行添加或移除項的操作。
每個向量會試圖通過維護 capacity 和 capacityincrement 來優化存儲管理。capacity 始終至少應與向量的大小相等;這個值通常比後者大些,因為随着将元件添加到向量中,其存儲将按capacityincrement 的大小增加存儲塊。應用程式可以在插入大量元件前增加向量的容量;這樣就減少了增加的重配置設定的量。
vector()
構造一個空向量,使其内部資料數組的大小為 10,其标準容量增量為零
vector(collection< ? extends e> c)
構造一個包含指定 collection 中的元素的向量,這些元素按其 collection 的疊代器傳回元素的順序排列
vector(int initialcapacity)
使用指定的初始容量和等于零的容量增量構造一個空向量
vector(int initialcapacity, int capacityincrement)
使用指定的初始容量和容量增量構造一個空的向量
将指定元素添加到此向量的末尾
在此向量的指定位置插入指定的元素
将指定 collection 中的所有元素添加到此向量的末尾,按照指定 collection 的疊代器所傳回的順序添加這些元素
在指定位置将指定 collection 中的所有元素插入到此向量中
addelement(e obj)
将指定的元件添加到此向量的末尾,将其大小增加 1
capacity()
傳回此向量的目前容量
從此向量中移除所有元素
傳回向量的一個副本
如果此向量包含指定的元素,則傳回 true
containsall(collection c)
如果此向量包含指定 collection 中的所有元素,則傳回 true
copyinto(object[] anarray)
将此向量的元件複制到指定的數組中
elementat(int index)
傳回指定索引處的元件
enumeration< e >
elements()
傳回此向量的元件的枚舉
增加此向量的容量(如有必要),以確定其至少能夠儲存最小容量參數指定的元件數
equals(object o)
比較指定對象與此向量的相等性
firstelement()
傳回此向量的第一個元件(位于索引 0) 處的項)
傳回向量中指定位置的元素
hashcode()
傳回此向量的哈希碼值
傳回此向量中第一次出現的指定元素的索引,如果此向量不包含該元素,則傳回 -1
indexof(object o, int index)
傳回此向量中第一次出現的指定元素的索引,從 index 處正向搜尋,如果未找到該元素,則傳回 -1
insertelementat(e obj, int index)
将指定對象作為此向量中的元件插入到指定的 index 處
測試此向量是否不包含元件
lastelement()
傳回此向量的最後一個元件
傳回此向量中最後一次出現的指定元素的索引;如果此向量不包含該元素,則傳回 -1
lastindexof(object o, int index)
傳回此向量中最後一次出現的指定元素的索引,從 index 處逆向搜尋,如果未找到該元素,則傳回 -1
移除此向量中指定位置的元素
移除此向量中指定元素的第一個比對項,如果向量不包含該元素,則元素保持不變
removeall(collection c)
從此向量中移除包含在指定 collection 中的所有元素
removeallelements()
從此向量中移除全部元件,并将其大小設定為零
removeelement(object obj)
從此向量中移除變量的第一個(索引最小的)比對項
removeelementat(int index)
删除指定索引處的元件
從此 list 中移除其索引位于fromindex(包括)與toindex(不包括)之間的所有元素
retainall(collection c)
在此向量中僅保留包含在指定 collection 中的元素
用指定的元素替換此向量中指定位置處的元素
setelementat(e obj, int index)
将此向量指定 index 處的元件設定為指定的對象
setsize(int newsize)
設定此向量的大小
傳回此向量中的元件數
list< e >
sublist(int fromindex, int toindex)
傳回此 list 的部分視圖,元素範圍為從 fromindex(包括)到 toindex(不包括)
傳回一個數組,包含此向量中以恰當順序存放的所有元素
傳回一個數組,包含此向量中以恰當順序存放的所有元素;傳回數組的運作時類型為指定數組的類型
string
tostring()
傳回此向量的字元串表示形式,其中包含每個元素的 string 表示形式
對此向量的容量進行微調,使其等于向量的目前大小
通過上面的例子,我們發現vector的使用和arraylist基本是一樣的,隻是vector在對元素進行操作時是線程同步的。線上程并發的時候,我們應該選擇vector而非arraylist。
與上面介紹的類一樣,linkedlist也實作了list接口,在其内部以連結清單的方式維護元素,linkedlist具備list接口的所有方法,另外,linkedlist類實作 deque 接口,為 add、poll 提供先進先出隊列操作,以及其他堆棧和雙端隊列操作。
linkedlist()
構造一個空清單
linkedlist(collection< ? extends e> c)
構造一個包含指定 collection 中的元素的清單,這些元素按其 collection 的疊代器傳回的順序排列
将指定元素添加到此清單的結尾
在此清單中指定的位置插入指定的元素
添加指定 collection 中的所有元素到此清單的結尾,順序是指定 collection 的疊代器傳回這些元素的順序
将指定 collection 中的所有元素從指定位置開始插入此清單
addfirst(e e)
将指定元素插入此清單的開頭
addlast(e e)
從此清單中移除所有元素
傳回此 linkedlist 的淺表副本
如果此清單包含指定元素,則傳回 true
iterator< e >
descendingiterator()
傳回以逆向順序在此雙端隊列的元素上進行疊代的疊代器
element()
擷取但不移除此清單的頭(第一個元素)
傳回此清單中指定位置處的元素
getfirst()
傳回此清單的第一個元素
getlast()
傳回此清單的最後一個元素
傳回此清單中首次出現的指定元素的索引,如果此清單中不包含該元素,則傳回 -1
傳回此清單中最後出現的指定元素的索引,如果此清單中不包含該元素,則傳回 -1
listiterator< e >
listiterator(int index)
傳回此清單中的元素的清單疊代器(按适當順序),從清單中指定位置開始
offer(e e)
将指定元素添加到此清單的末尾(最後一個元素)
offerfirst(e e)
在此清單的開頭插入指定的元素
offerlast(e e)
在此清單末尾插入指定的元素
peek()
peekfirst()
擷取但不移除此清單的第一個元素;如果此清單為空,則傳回 null
peeklast()
擷取但不移除此清單的最後一個元素;如果此清單為空,則傳回 null
poll()
擷取并移除此清單的頭(第一個元素)
pollfirst()
擷取并移除此清單的第一個元素;如果此清單為空,則傳回 null
polllast()
擷取并移除此清單的最後一個元素;如果此清單為空,則傳回 null
pop()
從此清單所表示的堆棧處彈出一個元素
push(e e)
将元素推入此清單所表示的堆棧
remove()
移除此清單中指定位置處的元素
從此清單中移除首次出現的指定元素(如果存在)
removefirst()
移除并傳回此清單的第一個元素
removefirstoccurrence(object o)
從此清單中移除第一次出現的指定元素(從頭部到尾部周遊清單時)
removelast()
移除并傳回此清單的最後一個元素
removelastoccurrence(object o)
從此清單中移除最後一次出現的指定元素(從頭部到尾部周遊清單時)
将此清單中指定位置的元素替換為指定的元素
傳回此清單的元素數
傳回以适當順序(從第一個元素到最後一個元素)包含此清單中所有元素的數組
傳回以适當順序(從第一個元素到最後一個元素)包含此清單中所有元素的數組;傳回數組的運作時類型為指定數組的類型
stack類繼承自vector,是以stack和vector一樣也是線程安全的。stack 類表示後進先出(lifo)的對象堆棧。它通過五個操作對類 vector 進行了擴充 ,允許将向量視為堆棧。它提供了通常的 push 和 pop 操作,以及取堆棧頂點的 peek 方法、測試堆棧是否為空的 empty 方法、在堆棧中查找項并确定到堆棧頂距離的 search 方法。
stack()
建立一個空堆棧
empty()
測試堆棧是否為空
檢視堆棧頂部的對象,但不從堆棧中移除它
移除堆棧頂部的對象,并作為此函數的值傳回該對象
push(e item)
把項壓入堆棧頂部
search(object o)
傳回對象在堆棧中的位置,以 1 為基數