| 
 | JavaTM Platform Standard Ed. 6 | |||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||||
| 概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | |||||||||
java.lang.Objectjava.util.concurrent.CopyOnWriteArrayList<E>
E - コレクション内に存在する要素の型public class CopyOnWriteArrayList<E>
基になる配列の新しいコピーを作成することにより、すべての推移的操作 (add、set など) が実装される ArrayList のスレッドセーフな変数です。
 
通常、これは非常に効率が悪いのですが、トラバーサル操作が変更を数の点で大幅に上回る場合には、代替手段よりも効率が良い場合があります。また、これは、トラバーサルを同期できない場合や、同期することを望まないが、並行スレッド間の干渉を排除する必要がある場合に有用です。「スナップショット」スタイルの反復子メソッドは、反復子の作成時点での配列状態への参照を使用します。この配列が、反復子の有効期間内に変更されることは決してないため、干渉は不可能であり、反復子は ConcurrentModificationException をスローしないことが保証されます。.反復子は、反復子の作成以降のリストへの追加、削除、または変更を反映しません。反復子自身に対する要素変更操作 (remove、set、および add) は、サポートされません。これらのメソッドは、UnsupportedOperationException をスローします。
null を含むすべての要素が許容されます。
メモリー整合性効果:ほかの並行処理コレクションと同様、オブジェクトを CopyOnWriteArrayList に配置する前のスレッド内のアクションは、別のスレッド内の CopyOnWriteArrayList からその要素にアクセスまたは削除した後のアクションよりも happen-beforeです。
 
このクラスは、Java Collections Framework のメンバーです。
| コンストラクタの概要 | |
|---|---|
| CopyOnWriteArrayList()空のリストを作成します。 | |
| CopyOnWriteArrayList(Collection<? extends E> c)指定されたコレクションの要素が含まれているリストを、要素がコレクションの反復子によって返される順序で作成します。 | |
| CopyOnWriteArrayList(E[] toCopyIn)指定された配列のコピーを保持するリストを作成します。 | |
| メソッドの概要 | ||
|---|---|---|
|  boolean | add(E e)リストの最後に、指定された要素を追加します。 | |
|  void | add(int index,
    E element)リスト内の指定された位置に指定された要素を挿入します。 | |
|  boolean | addAll(Collection<? extends E> c)指定されたコレクション内のすべての要素を、指定されたコレクションの反復子によって返される順序でリストの最後に追加します。 | |
|  boolean | addAll(int index,
       Collection<? extends E> c)指定されたコレクション内のすべての要素を、リストの指定された位置に挿入します。 | |
|  int | addAllAbsent(Collection<? extends E> c)このリストに含まれていない、指定されたコレクション内のすべての要素を、指定されたコレクションの反復子によって返される順序でこのリストの最後に追加します。 | |
|  boolean | addIfAbsent(E e)要素が存在しない場合、要素を追加します。 | |
|  void | clear()リストからすべての要素を削除します。 | |
|  Object | clone()このリストのシャローコピーを返します。 | |
|  boolean | contains(Object o)リストに指定の要素がある場合に true を返します。 | |
|  boolean | containsAll(Collection<?> c)指定されたコレクションのすべての要素がリストに含まれている場合に true を返します。 | |
|  boolean | equals(Object o)指定されたオブジェクトがリストと等しいかどうかを比較します。 | |
|  E | get(int index)リスト内の指定された位置にある要素を返します。 | |
|  int | hashCode()このリストのハッシュコード値を返します。 | |
|  int | indexOf(E e,
        int index)指定された要素をリスト内で index から検索して最初に検出された位置のインデックスを返します。 | |
|  int | indexOf(Object o)指定された要素がリスト内で最初に検出された位置のインデックスを返します。 | |
|  boolean | isEmpty()リストに要素がない場合に true を返します。 | |
|  Iterator<E> | iterator()このリスト内の要素を適切な順序で繰り返し処理する反復子を返します。 | |
|  int | lastIndexOf(E e,
            int index)指定された要素をリスト内で index から後向きに検索して最後に検出された位置のインデックスを返します。 | |
|  int | lastIndexOf(Object o)指定された要素がリスト内で最後に検出された位置のインデックスを返します。 | |
|  ListIterator<E> | listIterator()このリスト内の要素を適切な順序で繰り返し処理するリスト反復子を返します。 | |
|  ListIterator<E> | listIterator(int index)リスト内の要素を適切な順序で繰り返し処理する、リスト内の指定された位置から開始する反復子を返します。 | |
|  E | remove(int index)リストの指定された位置にある要素を削除します。 | |
|  boolean | remove(Object o)指定された要素がこのリストにあれば、その最初のものをリストから削除します。 | |
|  boolean | removeAll(Collection<?> c)リストから、指定されたコレクション内に保持されているすべての要素を削除します。 | |
|  boolean | retainAll(Collection<?> c)指定されたコレクション内に保持されている、リスト内の要素だけを保持します。 | |
|  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 - 最初に保持していた要素のコレクション
NullPointerException - 指定されたコレクションが null である場合public CopyOnWriteArrayList(E[] toCopyIn)
toCopyIn - 配列 (この配列のコピーは内部配列として使用される)
NullPointerException - 指定された配列が null である場合| メソッドの詳細 | 
|---|
public int size()
Collection<E> 内の sizeList<E> 内の sizepublic boolean isEmpty()
Collection<E> 内の isEmptyList<E> 内の isEmptypublic boolean contains(Object o)
Collection<E> 内の containsList<E> 内の containso - リストにあるかどうかを調べる要素
public int indexOf(Object o)
List<E> 内の indexOfo - 検索する要素
public int indexOf(E e,
                   int index)
e - 検索する要素index - 検索開始位置のインデックス
IndexOutOfBoundsException - 指定されたインデックスが負の場合public int lastIndexOf(Object o)
List<E> 内の lastIndexOfo - 検索する要素
public int lastIndexOf(E e,
                       int index)
e - 検索する要素index - 逆方向の検索開始位置のインデックス
IndexOutOfBoundsException - 指定されたインデックスが、このリストの現在のサイズに等しいかそれよりも大きい場合public Object clone()
Object 内の cloneCloneablepublic Object[] toArray()
返される配列への参照をこのリストが維持しないという点で、この配列は安全です。(つまり、このメソッドは新しい配列を割り当てる)。このため、呼び出し側は、返された配列を自由に変更できます。
メソッドは、配列ベースの API とコレクションベースの API の間の橋渡し役として機能します。
Collection<E> 内の toArrayList<E> 内の toArrayArrays.asList(Object[])public <T> T[] toArray(T[] a)
リストが指定された配列に収まり、その配列にさらに余裕がある場合 (つまり、配列がリストより多くの要素を持つ場合)、その配列内でリストの終端よりあとの要素は null に設定されます。これは、呼び出し側がこのリストに null 要素が含まれていないことがわかっている場合には、このリストの長さを判定するのに利用できます。
toArray() メソッドと同じように、このメソッドは、配列ベースの API とコレクションベースの API の間の橋渡し役として機能します。さらに、このメソッドでは、出力配列の実行時の型を正確に制御できるため、環境によっては割り当ての手間を抑えることができます。
 
x が、文字列だけからなるリストであることがわかっていると仮定します。次のコードを使うと、新しく割り当てられた String の配列にリストをダンプできます。
     String[] y = x.toArray(new String[0]);
toArray(new Object[0]) は、機能の点で toArray() と同一です。
Collection<E> 内の toArrayList<E> 内の toArraya - 配列が十分な大きさを持つ場合は、リストの要素が格納される配列。そうでない場合は、要素を格納するために同じ実行時の型の新しい配列が割り当てられる
ArrayStoreException - 指定された配列の実行時の型が、このリスト内のすべての要素の実行時の型のスーパータイプでない場合
NullPointerException - 指定された配列が null である場合public E get(int index)
List<E> 内の getindex - 返される要素のインデックス
IndexOutOfBoundsException - インデックスが範囲外の場合 (index < 0 || index >= size())
public E set(int index,
             E element)
List<E> 内の setindex - 置換される要素のインデックスelement - 指定された位置に格納される要素
IndexOutOfBoundsException - インデックスが範囲外の場合 (index < 0 || index >= size())public boolean add(E e)
Collection<E> 内の addList<E> 内の adde - リストに追加される要素
Collection.add(E) で指定されているとおり)
public void add(int index,
                E element)
List<E> 内の addindex - 指定の要素が挿入される位置のインデックスelement - 挿入される要素
IndexOutOfBoundsException - インデックスが範囲外の場合 (index < 0 || index > size())public E remove(int index)
List<E> 内の removeindex - 削除される要素のインデックス
IndexOutOfBoundsException - インデックスが範囲外の場合 (index < 0 || index >= size())public boolean remove(Object o)
Collection<E> 内の removeList<E> 内の removeo - リストから削除される要素 (その要素が存在する場合)
public boolean addIfAbsent(E e)
e - リストに追加される要素 (要素が存在しない場合)
public boolean containsAll(Collection<?> c)
Collection<E> 内の containsAllList<E> 内の containsAllc - このリストにあるかどうかを調べるコレクション
NullPointerException - 指定されたコレクションが null である場合contains(Object)public boolean removeAll(Collection<?> c)
Collection<E> 内の removeAllList<E> 内の removeAllc - このリストから削除される要素を含むコレクション
ClassCastException - このリストのある要素のクラスが、指定されたコレクションと互換でない場合 (省略可能)
NullPointerException - このリスト内に null 要素が含まれ、指定されたコレクションが null 要素を許可しない場合 (省略可能)。または指定されたコレクションが null の場合remove(Object)public boolean retainAll(Collection<?> c)
Collection<E> 内の retainAllList<E> 内の retainAllc - このリストで保持される要素を含むコレクション
ClassCastException - このリストのある要素のクラスが、指定されたコレクションと互換でない場合 (省略可能)
NullPointerException - このリスト内に null 要素が含まれ、指定されたコレクションが null 要素を許可しない場合 (省略可能)。または指定されたコレクションが null の場合remove(Object)public int addAllAbsent(Collection<? extends E> c)
c - 要素がリストに追加されるコレクション
NullPointerException - 指定されたコレクションが null である場合addIfAbsent(Object)public void clear()
Collection<E> 内の clearList<E> 内の clearpublic boolean addAll(Collection<? extends E> c)
Collection<E> 内の addAllList<E> 内の addAllc - 要素がリストに追加されるコレクション
NullPointerException - 指定されたコレクションが null である場合add(Object)
public boolean addAll(int index,
                      Collection<? extends E> c)
List<E> 内の addAllindex - 指定されたコレクションの最初の要素を挿入する位置のインデックスc - 要素がリストに追加されるコレクション
IndexOutOfBoundsException - インデックスが範囲外の場合 (index < 0 || index > size())
NullPointerException - 指定されたコレクションが null である場合add(int,Object)public String toString()
String.valueOf(Object) を実行したかのように文字列に変換されます。
Object 内の toStringpublic boolean equals(Object o)
List でもあり、指定されたリストで iterator によって返される要素のシーケンスがこのリストで反復子によって返されるシーケンスと同じである場合、true を返します。この 2 つのシーケンスは、同じ長さを持ち、シーケンス内の同じ位置にある対応する要素が「等しい」場合、同じものと見なされます。2 つの要素 e1 および e2 は、(e1==null ? e2==null :e1.equals(e2)) の場合は等しいと見なされます。
Collection<E> 内の equalsList<E> 内の equalsObject 内の equalso - リストと等しいかどうかを比較するオブジェクト
trueObject.hashCode(), 
Hashtablepublic int hashCode()
この実装は、List.hashCode() 内の定義を使用します。
Collection<E> 内の hashCodeList<E> 内の hashCodeObject 内の hashCodeObject.equals(java.lang.Object), 
Hashtablepublic Iterator<E> iterator()
返される反復子は、反復子の構築時のリスト状態のスナップショットを提供します。反復子のトラバーサル中に同期化は必要ありません。反復子は、remove メソッドをサポートしません。
Iterable<E> 内の iteratorCollection<E> 内の iteratorList<E> 内の iteratorpublic ListIterator<E> listIterator()
返される反復子は、反復子の構築時のリスト状態のスナップショットを提供します。反復子のトラバーサル中に同期化は必要ありません。反復子は、remove、set、または add メソッドをサポートしません。
List<E> 内の listIteratorpublic ListIterator<E> listIterator(int index)
next の最初の呼び出しによって返される最初の要素を示します。previous の最初の呼び出しは、指定されたインデックスから 1 を引いた値のインデックスを持つ要素を返します。
 返される反復子は、反復子の構築時のリスト状態のスナップショットを提供します。反復子のトラバーサル中に同期化は必要ありません。反復子は、remove、set、または add メソッドをサポートしません。
List<E> 内の listIteratorindex - リスト反復子から (next メソッド呼び出しによって) 返される最初の要素のインデックス
IndexOutOfBoundsException - インデックスが範囲外の場合 (index < 0 || index > size())
public List<E> subList(int fromIndex,
                       int toIndex)
バッキングリスト (すなわち、このリスト) の構造が、返されたリストを経由せずに変更された場合、このメソッドで返されたリストのセマンティクスは保証されません。構造の変更とは、リストのサイズが変わるような変更や、進行中の繰り返し処理が不正な結果に終わるような変更のことです。
List<E> 内の subListfromIndex - subList の下端点 (これを含む)toIndex - subList の上端点 (これを含まない)
IndexOutOfBoundsException - 端点のインデックス値が不正である場合 (fromIndex < 0 || toIndex > size || fromIndex > toIndex)| 
 | JavaTM Platform Standard Ed. 6 | |||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||||
| 概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | |||||||||
Copyright 2009 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。