|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
java.lang.Object java.util.AbstractCollection<E> java.util.AbstractList<E> java.util.ArrayList<E>
public class ArrayList<E>
List 介面的大小可變陣列的實作。實作了所有可選列表操作,並允許包括 null 在內的所有元素。除了實作 List 介面外,此類別還提供一些方法來操作內部用來存儲列表的陣列的大小。(此類別大致上等同於 Vector 類別,除了此類別是不同步的。)
size、isEmpty、get、set、iterator 和 listIterator 操作都以固定時間運行。add 操作以分攤的固定時間 運行,也就是說,添加 n 個元素需要 O(n) 時間。其他所有操作都以線性時間運行(大體上講)。與用於 LinkedList 實作的常數因子相比,此實作的常數因子較低。
每個 ArrayList 實例都有一個容量。該容量是指用來存儲列表元素的陣列的大小。它總是至少等於列表的大小。隨著向 ArrayList 中不斷添加元素,其容量也自動增長。並未指定增長策略的細節,因為這不只是添加元素會帶來分攤固定時間開銷那樣簡單。
在添加大量元素前,應用程序可以使用 ensureCapacity 操作來增加 ArrayList 實例的容量。這可以減少遞增式再分派的數量。
注意,此實作不是同步的。如果多個執行緒同時存取一個 ArrayList 實例,而其中至少一個執行緒從結構上修改了列表,那麼它必須 保持外部同步。(結構上的修改是指任何添加或刪除一個或多個元素的操作,或者顯式調整底層陣列的大小;僅僅設置元素的值不是結構上的修改。)這一般通過對自然封裝該列表的物件進行同步操作來完成。如果不存在這樣的物件,則應該使用 Collections.synchronizedList
方法將該列表“包裹”起來。這最好在創建時完成,以防止意外對列表進行不同步的存取:
List list = Collections.synchronizedList(new ArrayList(...));
此類別的 iterator 和 listIterator 方法返回的迭代器是快速失敗的:在創建迭代器之後,除非通過迭代器自身的 remove 或 add 方法從結構上對列表進行修改,否則在任何時間以任何方式對列表進行修改,迭代器都會拋出 ConcurrentModificationException
。因此,面對共時的修改,迭代器很快就會完全失敗,而不是冒著在將來某個不確定時間發生任意不確定行為的風險。
注意,迭代器的快速失敗行為無法得到保證,因為一般來說,不可能對是否出現不同步共時修改做出任何硬性保證。快速失敗迭代器會盡最大努力拋出 ConcurrentModificationException。因此,為提高這類別迭代器的正確性而編寫一個依賴於此異常的程序是錯誤的做法:迭代器的快速失敗行為應該僅用於檢測 bug。
此類別是 Java Collections Framework 的成員。
Collection
,
List
,
LinkedList
,
Vector
,
Collections.synchronizedList(List)
,
序列化表格欄位摘要 |
---|
從類別 java.util.AbstractList 繼承的欄位 |
---|
modCount |
建構子摘要 | |
---|---|
ArrayList()
建構一個初始容量為 10 的空列表。 |
|
ArrayList(Collection<? extends E> c)
建構一個套件含指定 collection 的元素的列表,這些元素是按照該 collection 的迭代器返回它們的順序排列的。 |
|
ArrayList(int initialCapacity)
建構一個具有指定初始容量的空列表。 |
方法摘要 | ||
---|---|---|
boolean |
add(E e)
將指定的元素添加到此列表的尾部。 |
|
void |
add(int index,
E element)
將指定的元素插入此列表中的指定位置。 |
|
boolean |
addAll(Collection<? extends E> c)
按照指定 collection 的迭代器所返回的元素順序,將該 collection 中的所有元素添加到此列表的尾部。 |
|
boolean |
addAll(int index,
Collection<? extends E> c)
從指定的位置開始,將指定 collection 中的所有元素插入到此列表中。 |
|
void |
clear()
移除此列表中的所有元素。 |
|
Object |
clone()
返回此 ArrayList 實例的淺表副本。 |
|
boolean |
contains(Object o)
如果此列表中包含指定的元素,則返回 true。 |
|
void |
ensureCapacity(int minCapacity)
如有必要,增加此 ArrayList 實例的容量,以確保它至少能夠容納最小容量參數所指定的元素數。 |
|
E |
get(int index)
返回此列表中指定位置上的元素。 |
|
int |
indexOf(Object o)
返回此列表中首次出現的指定元素的索引,或如果此列表不包含元素,則返回 -1。 |
|
boolean |
isEmpty()
如果此列表中沒有元素,則返回 true |
|
int |
lastIndexOf(Object o)
返回此列表中最後一次出現的指定元素的索引,或如果此列表不包含索引,則返回 -1。 |
|
E |
remove(int index)
移除此列表中指定位置上的元素。 |
|
boolean |
remove(Object o)
移除此列表中首次出現的指定元素(如果存在)。 |
|
protected void |
removeRange(int fromIndex,
int toIndex)
移除列表中索引在 fromIndex(包括)和 toIndex(不包括)之間的所有元素。 |
|
E |
set(int index,
E element)
用指定的元素替代此列表中指定位置上的元素。 |
|
int |
size()
返回此列表中的元素數。 |
|
Object[] |
toArray()
按適當順序(從第一個到最後一個元素)返回包含此列表中所有元素的陣列。 |
|
|
toArray(T[] a)
按適當順序(從第一個到最後一個元素)返回包含此列表中所有元素的陣列;返回陣列的運行時型別是指定陣列的運行時型別。 |
|
void |
trimToSize()
將此 ArrayList 實例的容量調整為列表的當前大小。 |
從類別 java.util.AbstractList 繼承的方法 |
---|
equals, hashCode, iterator, listIterator, listIterator, subList |
從類別 java.util.AbstractCollection 繼承的方法 |
---|
containsAll, removeAll, retainAll, toString |
從類別 java.lang.Object 繼承的方法 |
---|
finalize, getClass, notify, notifyAll, wait, wait, wait |
從介面 java.util.List 繼承的方法 |
---|
containsAll, equals, hashCode, iterator, listIterator, listIterator, removeAll, retainAll, subList |
建構子詳細資訊 |
---|
public ArrayList(int initialCapacity)
initialCapacity
- 列表的初始容量
IllegalArgumentException
- 如果指定的初始容量為負public ArrayList()
public ArrayList(Collection<? extends E> c)
c
- 其元素將放置在此列表中的 collection
NullPointerException
- 如果指定的 collection 為 null方法詳細資訊 |
---|
public void trimToSize()
public void ensureCapacity(int minCapacity)
minCapacity
- 所需的最小容量public int size()
Collection<E>
中的 size
List<E>
中的 size
AbstractCollection<E>
中的 size
public boolean isEmpty()
Collection<E>
中的 isEmpty
List<E>
中的 isEmpty
AbstractCollection<E>
中的 isEmpty
public boolean contains(Object o)
Collection<E>
中的 contains
List<E>
中的 contains
AbstractCollection<E>
中的 contains
o
- 測試此列表中是否存在的元素
public int indexOf(Object o)
List<E>
中的 indexOf
AbstractList<E>
中的 indexOf
o
- 要搜尋的元素
public int lastIndexOf(Object o)
List<E>
中的 lastIndexOf
AbstractList<E>
中的 lastIndexOf
o
- 要搜尋的元素
public Object clone()
Object
中的 clone
Cloneable
public Object[] toArray()
由於此列表不維護對返回陣列的任何參考,,因而它將是「安全的」。(換句話說,此方法必須分派一個新的陣列)。因此,調用者可以自由地修改返回的陣列。
此方法擔當基於陣列的 API 和基於 collection 的 API 之間的橋樑。
Collection<E>
中的 toArray
List<E>
中的 toArray
AbstractCollection<E>
中的 toArray
Arrays.asList(Object[])
public <T> T[] toArray(T[] a)
如果指定的陣列能容納佇列,並有剩餘的空間(即陣列的元素比佇列多),那麼會將陣列中緊接 collection 尾部的元素設置為 null。(僅 在調用者知道列表中不包含任何 null 元素時才能用此方法確定列表長度)。
Collection<E>
中的 toArray
List<E>
中的 toArray
AbstractCollection<E>
中的 toArray
a
- 要在其中存儲列表元素的陣列(如果它足夠大);否則,為此分派一個具有相同運行時型別的新陣列。
ArrayStoreException
- 如果指定陣列的運行時型別不是此列表每個元素的運行時型別的父級類別型
NullPointerException
- 如果指定陣列為 nullpublic E get(int index)
List<E>
中的 get
AbstractList<E>
中的 get
index
- 要返回元素的索引
IndexOutOfBoundsException
- 如果索引超出範圍 (index < 0 || index >= size())public E set(int index, E element)
List<E>
中的 set
AbstractList<E>
中的 set
index
- 要替代的元素的索引element
- 存儲在指定位置上的元素
IndexOutOfBoundsException
- 如果索引超出範圍 (index < 0 || index >= size())public boolean add(E e)
Collection<E>
中的 add
List<E>
中的 add
AbstractList<E>
中的 add
e
- 要添加到此列表中的元素
Collection.add(E)
的指定)public void add(int index, E element)
List<E>
中的 add
AbstractList<E>
中的 add
index
- 指定元素所插入位置的索引element
- 要插入的元素
IndexOutOfBoundsException
- 如果索引超出範圍 (index < 0 || index > size())public E remove(int index)
List<E>
中的 remove
AbstractList<E>
中的 remove
index
- 要移除的元素的索引
IndexOutOfBoundsException
- 如果索引超出範圍 (index < 0 || index >= size())public boolean remove(Object o)
Collection<E>
中的 remove
List<E>
中的 remove
AbstractCollection<E>
中的 remove
o
- 要從此列表中移除的元素(如果存在)
public void clear()
Collection<E>
中的 clear
List<E>
中的 clear
AbstractList<E>
中的 clear
public boolean addAll(Collection<? extends E> c)
Collection<E>
中的 addAll
List<E>
中的 addAll
AbstractCollection<E>
中的 addAll
c
- 套件含要添加到此列表中的元素的 collection
NullPointerException
- 如果指定的 collection 為 nullAbstractCollection.add(Object)
public boolean addAll(int index, Collection<? extends E> c)
List<E>
中的 addAll
AbstractList<E>
中的 addAll
index
- 插入指定 collection 中的首個元素的位置索引c
- 套件含要添加到此列表中元素的 collection
IndexOutOfBoundsException
- 如果索引超出範圍 (index < 0 || index > size())
NullPointerException
- 如果指定的 collection 為 nullprotected void removeRange(int fromIndex, int toIndex)
AbstractList<E>
中的 removeRange
fromIndex
- 要移除的首個元素的索引toIndex
- 最後一個要移除的元素後面那個元素的索引
IndexOutOfBoundsException
- 如果 fromIndex 或 toIndex 超出範圍 (fromIndex < 0 || fromIndex >= size() || toIndex
> size() || toIndex < fromIndex)
|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only。