|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
java.lang.Object java.util.concurrent.CopyOnWriteArrayList<E>
E
- 此 collection 中所保存元素的型別public class CopyOnWriteArrayList<E>
ArrayList
的一個執行緒安全的變體,其中所有可變操作(add、set 等等)都是通過對底層陣列進行一次新的複製來實作的。
這一般需要很大的開銷,但是當遍歷操作的數量大大超過可變操作的數量時,這種方法可能比其他替代方法更 有效。在不能或不想進行同步遍歷,但又需要從共時執行緒中排除衝突時,它也很有用。“快照”樣式的迭代器方法在創建迭代器時使用了對陣列狀態的參考。此陣列在迭代器的生存期內不會更改,因此不可能發生衝突,並且迭代器保證不會拋出 ConcurrentModificationException。創建迭代器以後,迭代器就不會反映列表的添加、移除或者更改。在迭代器上進行的元素更改操作(remove、set 和 add)不受支持。這些方法將拋出 UnsupportedOperationException。
允許使用所有元素,包括 null。
記憶體一致性效果:當存在其他共時 collection 時,將物件放入 CopyOnWriteArrayList
之前的執行緒中的操作 happen-before 隨後通過另一執行緒從 CopyOnWriteArrayList
中存取或移除該元素的操作。
此類別是 Java Collections Framework 的成員。
建構子摘要 | |
---|---|
CopyOnWriteArrayList()
創建一個空列表。 |
|
CopyOnWriteArrayList(Collection<? extends E> c)
創建一個按 collection 的迭代器返回元素的順序包含指定 collection 元素的列表。 |
|
CopyOnWriteArrayList(E[] toCopyIn)
創建一個保存給定陣列的副本的列表。 |
方法摘要 | ||
---|---|---|
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 的所有元素插入此列表。 |
|
int |
addAllAbsent(Collection<? extends E> c)
按照指定 collection 的迭代器返回元素的順序,將指定 collection 中尚未包含在此列表中的所有元素添加列表的尾部。 |
|
boolean |
addIfAbsent(E e)
添加元素(如果不存在)。 |
|
void |
clear()
從此列表移除所有元素。 |
|
Object |
clone()
返回此列表的淺表副本。 |
|
boolean |
contains(Object o)
如果此列表包含指定的元素,則返回 true。 |
|
boolean |
containsAll(Collection<?> c)
如果此列表包含指定 collection 的所有元素,則返回 true。 |
|
boolean |
equals(Object o)
比較指定對象與此列表的相等性。 |
|
E |
get(int index)
返回列表中指定位置的元素。 |
|
int |
hashCode()
返回此列表的雜湊碼值。 |
|
int |
indexOf(E e,
int index)
返回第一次出現的指定元素在此列表中的索引,從 index 開始向前搜尋,如果沒有找到該元素,則返回 -1。 |
|
int |
indexOf(Object o)
返回此列表中第一次出現的指定元素的索引;如果此列表不包含該元素,則返回 -1。 |
|
boolean |
isEmpty()
如果此列表不包含任何元素,則返回 true。 |
|
Iterator<E> |
iterator()
返回以恰當順序在此列表元素上進行迭代的迭代器。 |
|
int |
lastIndexOf(E e,
int index)
返回最後一次出現的指定元素在此列表中的索引,從 index 開始向後搜尋,如果沒有找到該元素,則返回 -1。 |
|
int |
lastIndexOf(Object o)
返回此列表中最後出現的指定元素的索引;如果列表不包含此元素,則返回 -1。 |
|
ListIterator<E> |
listIterator()
返回此列表元素的列表迭代器(按適當順序)。 |
|
ListIterator<E> |
listIterator(int index)
返回列表中元素的列表迭代器(按適當順序),從列表的指定位置開始。 |
|
E |
remove(int index)
移除此列表指定位置上的元素。 |
|
boolean |
remove(Object o)
從此列表移除第一次出現的指定元素(如果存在)。 |
|
boolean |
removeAll(Collection<?> c)
從此列表移除所有套件含在指定 collection 中的元素。 |
|
boolean |
retainAll(Collection<?> c)
只保留此列表中包含在指定 collection 中的元素。 |
|
E |
set(int index,
E element)
用指定的元素替代此列表指定位置上的元素。 |
|
int |
size()
返回此列表中的元素數。 |
|
List<E> |
subList(int fromIndex,
int toIndex)
返回此列表中 fromIndex(包括)和 toIndex(不包括)之間部分的視圖。 |
|
Object[] |
toArray()
返回一個按恰當順序(從第一個元素到最後一個元素)包含此列表中所有元素的陣列。 |
|
|
toArray(T[] a)
返回以恰當順序(從第一個元素到最後一個元素)包含列表所有元素的陣列;返回陣列的運行時型別是指定陣列的運行時型別。 |
|
String |
toString()
返回此列表的字元串表示形式。 |
從類別 java.lang.Object 繼承的方法 |
---|
finalize, getClass, notify, notifyAll, wait, wait, wait |
建構子詳細資訊 |
---|
public CopyOnWriteArrayList()
public CopyOnWriteArrayList(Collection<? extends E> c)
c
- 最初保存元素的 collection
NullPointerException
- 如果指定 collection 為 nullpublic CopyOnWriteArrayList(E[] toCopyIn)
toCopyIn
- 陣列(將此陣列的副本用作內部陣列)
NullPointerException
- 如果指定陣列為 null方法詳細資訊 |
---|
public int size()
Collection<E>
中的 size
List<E>
中的 size
public boolean isEmpty()
Collection<E>
中的 isEmpty
List<E>
中的 isEmpty
public boolean contains(Object o)
Collection<E>
中的 contains
List<E>
中的 contains
o
- 測試是否存在於此列表中的元素。
public int indexOf(Object o)
List<E>
中的 indexOf
o
- 要搜尋的元素
public int indexOf(E e, int index)
e
- 要搜尋的元素index
- 搜尋開始處的索引
IndexOutOfBoundsException
- 如果指定索引為負public int lastIndexOf(Object o)
List<E>
中的 lastIndexOf
o
- 要搜尋的元素
public int lastIndexOf(E e, int index)
e
- 要搜尋的元素index
- 開始向後搜尋處的索引
IndexOutOfBoundsException
- 如果指定索引大於等於此列表的當前大小public Object clone()
Object
中的 clone
Cloneable
public Object[] toArray()
由於此列表並不維護對返回陣列的任何參考,因而它將是「安全的」。(換句話說,此方法必須分派一個新陣列)。因此,調用者可以隨意修改返回的陣列。
此方法充當基於陣列的 API 與基於 collection 的 API 之間的橋樑。
Collection<E>
中的 toArray
List<E>
中的 toArray
Arrays.asList(Object[])
public <T> T[] toArray(T[] a)
如果指定的陣列能容納列表,並有剩餘的空間(即陣列的元素比列表多),那麼會將緊接列表尾部的元素設置為 null。(僅 當調用者知道此列表不包含任何 null 元素時,才可使用此方法來確定此列表的長度。)
像 toArray()
方法一樣,此方法充當基於陣列的 API 與基於 collection 的 API 之間的橋樑。更進一步說,此方法允許對輸出陣列的運行時型別進行精確控制,在某些情況下,這可以用來節省分派開銷。
假定 x 是只包含字元串的一個已知列表。以下程式碼用來將該列表轉儲到一個新分派的 String 陣列:
String[] y = x.toArray(new String[0]);注意,toArray(new Object[0]) 和 toArray() 在功能上是相同的。
Collection<E>
中的 toArray
List<E>
中的 toArray
a
- 要存儲列表元素的陣列(如果該陣列足夠大);否則,將分派一個具有相同運行時型別的新陣列。
ArrayStoreException
- 如果指定陣列的運行時型別不是此列表每個元素的運行時型別的父級類別型
NullPointerException
- 如果指定陣列為 nullpublic E get(int index)
List<E>
中的 get
index
- 要返回的元素的索引
IndexOutOfBoundsException
- 如果索引超出範圍 (index < 0 || index >= size())public E set(int index, E element)
List<E>
中的 set
index
- 要替換的元素的索引element
- 要在指定位置存儲的元素
IndexOutOfBoundsException
- 如果索引超出範圍 (index < 0 || index >= size())public boolean add(E e)
Collection<E>
中的 add
List<E>
中的 add
e
- 要添加到此列表的元素。
Collection.add(E)
的規定)public void add(int index, E element)
List<E>
中的 add
index
- 要在其中插入指定元素處的索引element
- 要插入的元素
IndexOutOfBoundsException
- 如果索引超出範圍 (index < 0 || index > size())public E remove(int index)
List<E>
中的 remove
index
- 要移除的元素的索引
IndexOutOfBoundsException
- 如果索引超出範圍 (index < 0 || index >= size())public boolean remove(Object o)
Collection<E>
中的 remove
List<E>
中的 remove
o
- 要從此列表移除的元素(如果存在)
public boolean addIfAbsent(E e)
e
- 要添加到此列表中的元素(如果不存在)
public boolean containsAll(Collection<?> c)
Collection<E>
中的 containsAll
List<E>
中的 containsAll
c
- 將被檢查是否包含於此列表的 collection
NullPointerException
- 如果指定 collection 為 nullcontains(Object)
public boolean removeAll(Collection<?> c)
Collection<E>
中的 removeAll
List<E>
中的 removeAll
c
- 套件含將從此列表中移除的元素的 collection
ClassCastException
- 如果此列表的元素與指定 collection 不相容(可選)
NullPointerException
- 如果此列表包含一個 null 元素,並且指定 collection 不允許使用 null 元素(可選),或者指定 collection 為 nullremove(Object)
public boolean retainAll(Collection<?> c)
Collection<E>
中的 retainAll
List<E>
中的 retainAll
c
- 套件含保留在此列表中的元素的 collection
ClassCastException
- 如果此列表的元素的類別與指定 collection 不相容(可選)
NullPointerException
- 如果此列表包含一個 null 元素,並且指定 collection 不允許使用 null 元素(可選),或者指定 collection 為 nullremove(Object)
public int addAllAbsent(Collection<? extends E> c)
c
- 套件含要添加到此列表中的元素的 collection
NullPointerException
- 如果指定 collection 為 nulladdIfAbsent(Object)
public void clear()
Collection<E>
中的 clear
List<E>
中的 clear
public boolean addAll(Collection<? extends E> c)
Collection<E>
中的 addAll
List<E>
中的 addAll
c
- 套件含將插入此列表中的元素的 collection
NullPointerException
- 如果指定 collection 為 nulladd(Object)
public boolean addAll(int index, Collection<? extends E> c)
List<E>
中的 addAll
index
- 插入指定 collection 中第一個元素的索引c
- 套件含將添加到此列表中的元素的 collection
NullPointerException
- 如果指定的 collection 套件含一個或多個 null 元素,並且該列表不允許 null 元素,或者指定的 collection 為 null
NullPointerException
- 如果指定 collection 為 nulladd(int,Object)
public String toString()
String.valueOf(Object)
可以將元素轉換成字元串。
Object
中的 toString
public boolean equals(Object o)
List
,並且在指定列表上迭代的迭代器所返回的元素的序列與在此列表上迭代的迭代器所返回的元素序列相同,則返回 true
。如果兩個序列具有相同的長度,並且對應元素在序列的同一位置上,則認為兩個序列是相等的。滿足 (e1==null ? e2==null : e1.equals(e2))
的兩個元素 e1
和 e2
視為相等。
Collection<E>
中的 equals
List<E>
中的 equals
Object
中的 equals
o
- 將與此列表進行相等性比較的物件
true
Object.hashCode()
,
Hashtable
public int hashCode()
此實作使用了 List.hashCode()
中的定義。
Collection<E>
中的 hashCode
List<E>
中的 hashCode
Object
中的 hashCode
Object.equals(java.lang.Object)
,
Hashtable
public Iterator<E> iterator()
建構該迭代器時,所返回的迭代器提供了列表狀態的一個快照。遍歷該迭代器時不需要執行任何同步。該迭代器不 支持 remove 方法。
Iterable<E>
中的 iterator
Collection<E>
中的 iterator
List<E>
中的 iterator
public ListIterator<E> listIterator()
在建構該迭代器時,返回的迭代器提供了列表狀態的一個快照。遍歷該迭代器時不需要執行任何同步。該迭代器不 支持 remove、set 或者 add 方法。
List<E>
中的 listIterator
public ListIterator<E> listIterator(int index)
next
的初始調用所返回的第一個元素。previous
方法的初始調用將返回索引比指定索引少 1 的元素。
在建構該迭代器時,返回的迭代器提供了列表狀態的一個快照。遍歷該迭代器時不需要執行任何同步。該迭代器不 支持 remove、set 或者 add 方法。
List<E>
中的 listIterator
index
- 從列表迭代器返回的第一個元素的索引(通過調用 next 方法)
IndexOutOfBoundsException
- 如果索引超出範圍 (index < 0 || index > size())public List<E> subList(int fromIndex, int toIndex)
如果通過返回列表以外的其他任何方式從結構上修改 底層實作列表(即此列表),則此方法返回的列表語義將是不確定的。(從結構上修改是指更改列表的大小,或者以其他方式打亂列表,使正在進行的迭代產生錯誤的結果。)
List<E>
中的 subList
fromIndex
- subList 的低端點(包括)toIndex
- subList 的高端點(不包括)
IndexOutOfBoundsException
- 非法的端點值 (fromIndex < 0 || toIndex > size || fromIndex > toIndex)
|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only。