JavaTM Platform
Standard Ed. 6

java.util
クラス ArrayDeque<E>

java.lang.Object
  上位を拡張 java.util.AbstractCollection<E>
      上位を拡張 java.util.ArrayDeque<E>
型パラメータ:
E - コレクション内に存在する要素の型
すべての実装されたインタフェース:
Serializable, Cloneable, Iterable<E>, Collection<E>, Deque<E>, Queue<E>

public class ArrayDeque<E>
extends AbstractCollection<E>
implements Deque<E>, Cloneable, Serializable

Deque インタフェースのサイズ変更可能な配列の実装です。配列の両端キューに容量制限はなく、使用量をサポートするために必要に応じて大きくなります。それらはスレッドセーフではありません。外部の同期化がない場合、複数のスレッドによる並行アクセスはサポートされません。null 要素は禁止されています。このクラスは通常、スタックとして使われるときは Stack よりも高速で、キューとして使われるときは LinkedList よりも高速です。

ほとんどの ArrayDeque オペレーションは、一定の償却時間で実行されます。例外は、removeremoveFirstOccurrenceremoveLastOccurrencecontainsiterator.remove()、および一括オペレーションで、これらはすべて要素の数に比例する時間で実行されます。

このクラスの iterator メソッドによって返される反復子は「フェイルファスト」です。つまり、反復子の作成後に、反復子自体の remove メソッド以外の方法で両端キューが変更されると、反復子は通常は ConcurrentModificationException をスローします。このように、並行して変更が行われると、反復子は、将来の予測できない時点において予測できない動作が発生する危険を回避するために、ただちにかつ手際よく例外をスローします。

通常、非同期の並行変更がある場合、確かな保証を行うことは不可能なので、反復子のフェイルファストの動作を保証することはできません。フェイルファスト反復子は最善努力原則に基づき、ConcurrentModificationException をスローします。したがって、正確を期すためにこの例外に依存するプログラムを書くことは誤りです。「反復子のフェイルファストの動作はバグを検出するためにのみ使用すべきです」

このクラスとその反復子は、Collection および Iterator インタフェースの「オプション」メソッドすべてを実装します。

このクラスは、Java Collections Framework のメンバーです。

導入されたバージョン:
1.6
関連項目:
直列化された形式

コンストラクタの概要
ArrayDeque()
          16 個の要素を保持するために十分な初期容量を持つ、空の配列両端キューを作成します。
ArrayDeque(Collection<? extends E> c)
          指定されたコレクションの反復子が返す順序で、その要素を格納する両端キューを作成します。
ArrayDeque(int numElements)
          指定された数の要素を保持するために十分な初期容量を持つ、空の配列両端キューを作成します。
 
メソッドの概要
 boolean add(E e)
          指定された要素をこの両端キューの末尾に挿入します。
 void addFirst(E e)
          指定された要素をこの両端キューの先頭に挿入します。
 void addLast(E e)
          指定された要素をこの両端キューの末尾に挿入します。
 void clear()
          すべての要素を両端キューから削除します。
 ArrayDeque<E> clone()
          この両端キューの複製を返します。
 boolean contains(Object o)
          指定された要素がこの両端キューに含まれている場合に true を返します。
 Iterator<E> descendingIterator()
          この両端キュー内の要素を逆順で繰り返し処理する反復子を返します。
 E element()
          この両端キューで表されるキューの先頭を取得しますが、削除しません。
 E getFirst()
          この両端キューの最初の要素を取得しますが、削除はしません。
 E getLast()
          この両端キューの最後の要素を取得しますが、削除はしません。
 boolean isEmpty()
          この両端キューに要素が含まれていない場合に true を返します。
 Iterator<E> iterator()
          両端キューの要素の反復子を返します。
 boolean offer(E e)
          指定された要素をこの両端キューの末尾に挿入します。
 boolean offerFirst(E e)
          指定された要素をこの両端キューの先頭に挿入します。
 boolean offerLast(E e)
          指定された要素をこの両端キューの末尾に挿入します。
 E peek()
          この両端キューによって表されるキューの先頭を取得しますが、削除しません。
 E peekFirst()
          この両端キューの最初の要素を取得しますが、削除しません。
 E peekLast()
          この両端キューの最後の要素を取得しますが、削除しません。
 E poll()
          この両端キューによって表されるキューの先頭 (つまり、この両端キューの最初の要素) を取得および削除します。
 E pollFirst()
          この両端キューの最初の要素を取得および削除します。
 E pollLast()
          この両端キューの最後の要素を取得および削除します。
 E pop()
          この両端キューで表されるスタックに要素をポップします。
 void push(E e)
          この両端キューで表されるスタックに要素を入れます。
 E remove()
          この両端キューが表すキューの先頭を取得して削除します。
 boolean remove(Object o)
          指定された要素の単一のインスタンスを、この両端キューから削除します。
 E removeFirst()
          この両端キューの最初の要素を取得して削除します。
 boolean removeFirstOccurrence(Object o)
          両端キューを先頭から末尾までトラバースするときに、この両端キューの指定された要素のうち最初に出現したものを削除します。
 E removeLast()
          この両端キューの最後の要素を取得して削除します。
 boolean removeLastOccurrence(Object o)
          両端キューを先頭から末尾までトラバースするときに、この両端キューの指定された要素のうち最後に出現したものを削除します。
 int size()
          この両端キュー内の要素の数を返します。
 Object[] toArray()
          両端キュー内のすべての要素を適切な順序 (最初の要素から最後の要素へ) で格納している配列を返します。
<T> T[]
toArray(T[] a)
          両端キュー内のすべての要素を適切な順序 (最初の要素から最後の要素へ) で格納している配列を返します。
 
クラス java.util.AbstractCollection から継承されたメソッド
addAll, containsAll, removeAll, retainAll, toString
 
クラス java.lang.Object から継承されたメソッド
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
インタフェース java.util.Collection から継承されたメソッド
addAll, containsAll, equals, hashCode, removeAll, retainAll
 

コンストラクタの詳細

ArrayDeque

public ArrayDeque()
16 個の要素を保持するために十分な初期容量を持つ、空の配列両端キューを作成します。


ArrayDeque

public ArrayDeque(int numElements)
指定された数の要素を保持するために十分な初期容量を持つ、空の配列両端キューを作成します。

パラメータ:
numElements - 両端キューの初期容量の範囲の下限

ArrayDeque

public ArrayDeque(Collection<? extends E> c)
指定されたコレクションの反復子が返す順序で、その要素を格納する両端キューを作成します。コレクションの反復子によって返される最初の要素が、最初の要素、つまり両端キューの「先頭」になります。

パラメータ:
c - 要素が両端キューに配置されるコレクション
例外:
NullPointerException - 指定されたコレクションが null である場合
メソッドの詳細

addFirst

public void addFirst(E e)
指定された要素をこの両端キューの先頭に挿入します。

定義:
インタフェース Deque<E> 内の addFirst
パラメータ:
e - 追加する要素
例外:
NullPointerException - 指定された要素が null である場合

addLast

public void addLast(E e)
指定された要素をこの両端キューの末尾に挿入します。

このメソッドは、add(E) と同等です。

定義:
インタフェース Deque<E> 内の addLast
パラメータ:
e - 追加する要素
例外:
NullPointerException - 指定された要素が null である場合

offerFirst

public boolean offerFirst(E e)
指定された要素をこの両端キューの先頭に挿入します。

定義:
インタフェース Deque<E> 内の offerFirst
パラメータ:
e - 追加する要素
戻り値:
true (Deque.offerFirst(E) で指定された場合と同様)
例外:
NullPointerException - 指定された要素が null である場合

offerLast

public boolean offerLast(E e)
指定された要素をこの両端キューの末尾に挿入します。

定義:
インタフェース Deque<E> 内の offerLast
パラメータ:
e - 追加する要素
戻り値:
true (Deque.offerLast(E) で指定された場合と同様)
例外:
NullPointerException - 指定された要素が null である場合

removeFirst

public E removeFirst()
インタフェース Deque の記述:
この両端キューの最初の要素を取得して削除します。このメソッドは、両端キューが空の場合に例外をスローする点のみが pollFirst と異なります。

定義:
インタフェース Deque<E> 内の removeFirst
戻り値:
この両端キューの先頭
例外:
NoSuchElementException - この両端キューが空の場合

removeLast

public E removeLast()
インタフェース Deque の記述:
この両端キューの最後の要素を取得して削除します。このメソッドは、両端キューが空の場合に例外をスローする点のみが pollLast と異なります。

定義:
インタフェース Deque<E> 内の removeLast
戻り値:
この両端キューの末尾
例外:
NoSuchElementException - この両端キューが空の場合

pollFirst

public E pollFirst()
インタフェース Deque の記述:
この両端キューの最初の要素を取得および削除します。両端キューが空の場合は null を返します。

定義:
インタフェース Deque<E> 内の pollFirst
戻り値:
この両端キューの先頭。両端キューが空の場合は null

pollLast

public E pollLast()
インタフェース Deque の記述:
この両端キューの最後の要素を取得および削除します。両端キューが空の場合は null を返します。

定義:
インタフェース Deque<E> 内の pollLast
戻り値:
この両端キューの末尾。両端キューが空の場合は null

getFirst

public E getFirst()
インタフェース Deque の記述:
この両端キューの最初の要素を取得しますが、削除はしません。 このメソッドは、両端キューが空の場合に例外をスローする点のみが peekFirst と異なります。

定義:
インタフェース Deque<E> 内の getFirst
戻り値:
この両端キューの先頭
例外:
NoSuchElementException - この両端キューが空の場合

getLast

public E getLast()
インタフェース Deque の記述:
この両端キューの最後の要素を取得しますが、削除はしません。このメソッドは、両端キューが空の場合に例外をスローする点のみが peekLast と異なります。

定義:
インタフェース Deque<E> 内の getLast
戻り値:
この両端キューの末尾
例外:
NoSuchElementException - この両端キューが空の場合

peekFirst

public E peekFirst()
インタフェース Deque の記述:
この両端キューの最初の要素を取得しますが、削除しません。両端キューが空の場合は null を返します。

定義:
インタフェース Deque<E> 内の peekFirst
戻り値:
この両端キューの先頭。両端キューが空の場合は null

peekLast

public E peekLast()
インタフェース Deque の記述:
この両端キューの最後の要素を取得しますが、削除しません。両端キューが空の場合は null を返します。

定義:
インタフェース Deque<E> 内の peekLast
戻り値:
この両端キューの末尾。両端キューが空の場合は null

removeFirstOccurrence

public boolean removeFirstOccurrence(Object o)
両端キューを先頭から末尾までトラバースするときに、この両端キューの指定された要素のうち最初に出現したものを削除します。その要素が両端キューにない場合、変更はありません。つまり、o.equals(e) となる最初の要素 e が存在する場合は、その要素を削除します。指定された要素が両端キュー内にあった場合 (両端キューが呼び出しの結果として変更された場合) は、true を返します。

定義:
インタフェース Deque<E> 内の removeFirstOccurrence
パラメータ:
o - この両端キューから削除される要素 (その要素が存在する場合)
戻り値:
指定された要素が両端キューに含まれている場合は true

removeLastOccurrence

public boolean removeLastOccurrence(Object o)
両端キューを先頭から末尾までトラバースするときに、この両端キューの指定された要素のうち最後に出現したものを削除します。その要素が両端キューにない場合、変更はありません。つまり、o.equals(e) となる最後の要素 e が存在する場合は、その要素を削除します。指定された要素が両端キュー内にあった場合 (両端キューが呼び出しの結果として変更された場合) は、true を返します。

定義:
インタフェース Deque<E> 内の removeLastOccurrence
パラメータ:
o - この両端キューから削除される要素 (その要素が存在する場合)
戻り値:
指定された要素が両端キューに含まれている場合は true

add

public boolean add(E e)
指定された要素をこの両端キューの末尾に挿入します。

このメソッドは、addLast(E) と同等です。

定義:
インタフェース Collection<E> 内の add
定義:
インタフェース Deque<E> 内の add
定義:
インタフェース Queue<E> 内の add
オーバーライド:
クラス AbstractCollection<E> 内の add
パラメータ:
e - 追加する要素
戻り値:
true (Collection.add(E) で指定された場合と同様)
例外:
NullPointerException - 指定された要素が null である場合

offer

public boolean offer(E e)
指定された要素をこの両端キューの末尾に挿入します。

このメソッドは、offerLast(E) と同等です。

定義:
インタフェース Deque<E> 内の offer
定義:
インタフェース Queue<E> 内の offer
パラメータ:
e - 追加する要素
戻り値:
true (Queue.offer(E) で指定された場合と同様)
例外:
NullPointerException - 指定された要素が null である場合

remove

public E remove()
この両端キューが表すキューの先頭を取得して削除します。 このメソッドは、両端キューが空の場合に例外をスローする点が poll と異なります。

このメソッドは、removeFirst() と同等です。

定義:
インタフェース Deque<E> 内の remove
定義:
インタフェース Queue<E> 内の remove
戻り値:
この両端キューで表されるキューの先頭
例外:
NoSuchElementException - この両端キューが空の場合

poll

public E poll()
この両端キューによって表されるキューの先頭 (つまり、この両端キューの最初の要素) を取得および削除します。両端キューが空の場合は、null を返します。

このメソッドは、pollFirst() と同等です。

定義:
インタフェース Deque<E> 内の poll
定義:
インタフェース Queue<E> 内の poll
戻り値:
この両端キューで表されるキューの先頭。両端キューが空の場合は null

element

public E element()
この両端キューで表されるキューの先頭を取得しますが、削除しません。このメソッドは、両端キューが空の場合に例外をスローする点が peek と異なります。

このメソッドは、getFirst() と同等です。

定義:
インタフェース Deque<E> 内の element
定義:
インタフェース Queue<E> 内の element
戻り値:
この両端キューで表されるキューの先頭
例外:
NoSuchElementException - この両端キューが空の場合

peek

public E peek()
この両端キューによって表されるキューの先頭を取得しますが、削除しません。両端キューが空の場合は null を返します。

このメソッドは、peekFirst() と同等です。

定義:
インタフェース Deque<E> 内の peek
定義:
インタフェース Queue<E> 内の peek
戻り値:
この両端キューで表されるキューの先頭。両端キューが空の場合は null

push

public void push(E e)
この両端キューで表されるスタックに要素を入れます。つまり、要素をこの両端キューの先頭に挿入します。

このメソッドは、addFirst(E) と同等です。

定義:
インタフェース Deque<E> 内の push
パラメータ:
e - プッシュする要素
例外:
NullPointerException - 指定された要素が null である場合

pop

public E pop()
この両端キューで表されるスタックに要素をポップします。つまり、この両端キューの最初の要素を削除して返します。

このメソッドは、removeFirst() と同等です。

定義:
インタフェース Deque<E> 内の pop
戻り値:
この両端キューの先頭の要素 (この両端キューによって表されるスタックの上部)
例外:
NoSuchElementException - この両端キューが空の場合

size

public int size()
この両端キュー内の要素の数を返します。

定義:
インタフェース Collection<E> 内の size
定義:
インタフェース Deque<E> 内の size
定義:
クラス AbstractCollection<E> 内の size
戻り値:
この両端キュー内の要素の数

isEmpty

public boolean isEmpty()
この両端キューに要素が含まれていない場合に true を返します。

定義:
インタフェース Collection<E> 内の isEmpty
オーバーライド:
クラス AbstractCollection<E> 内の isEmpty
戻り値:
この両端キューに要素が含まれていない場合は true

iterator

public Iterator<E> iterator()
両端キューの要素の反復子を返します。要素の順序は最初 (先頭) から最後 (末尾) になります。これは、要素が remove() の連続する呼び出しによってキューから取り出される順序、または pop() の連続する呼び出しによってポップされる順序と同じです。

定義:
インタフェース Iterable<E> 内の iterator
定義:
インタフェース Collection<E> 内の iterator
定義:
インタフェース Deque<E> 内の iterator
定義:
クラス AbstractCollection<E> 内の iterator
戻り値:
両端キューの要素の反復子

descendingIterator

public Iterator<E> descendingIterator()
インタフェース Deque の記述:
この両端キュー内の要素を逆順で繰り返し処理する反復子を返します。要素は最後 (末尾) から最初 (先頭) の順に返されます。

定義:
インタフェース Deque<E> 内の descendingIterator
戻り値:
この両端キュー内の要素を逆順で繰り返し処理する反復子

contains

public boolean contains(Object o)
指定された要素がこの両端キューに含まれている場合に true を返します。つまり、両端キューに、o.equals(e) となる要素 e が 1 つ以上含まれている場合にだけ true を返します。

定義:
インタフェース Collection<E> 内の contains
定義:
インタフェース Deque<E> 内の contains
オーバーライド:
クラス AbstractCollection<E> 内の contains
パラメータ:
o - この両端キューに含まれているかどうかを調べるオブジェクト
戻り値:
指定された要素がこの両端キューに含まれている場合は true

remove

public boolean remove(Object o)
指定された要素の単一のインスタンスを、この両端キューから削除します。その要素が両端キューにない場合、変更はありません。つまり、o.equals(e) となる最初の要素 e が存在する場合は、その要素を削除します。指定された要素が両端キュー内にあった場合 (両端キューが呼び出しの結果として変更された場合) は、true を返します。

このメソッドは、removeFirstOccurrence(java.lang.Object) と同等です。

定義:
インタフェース Collection<E> 内の remove
定義:
インタフェース Deque<E> 内の remove
オーバーライド:
クラス AbstractCollection<E> 内の remove
パラメータ:
o - この両端キューから削除される要素 (その要素が存在する場合)
戻り値:
指定された要素がこの両端キューに含まれている場合は true

clear

public void clear()
すべての要素を両端キューから削除します。この呼び出しが戻ると、両端キューは空になります。

定義:
インタフェース Collection<E> 内の clear
オーバーライド:
クラス AbstractCollection<E> 内の clear

toArray

public Object[] toArray()
両端キュー内のすべての要素を適切な順序 (最初の要素から最後の要素へ) で格納している配列を返します。

返される配列への参照を両端キューが維持しないという点で、この配列は安全です。つまり、このメソッドは新しい配列を割り当てる必要があります。このため、呼び出し側は、返された配列を自由に変更できます。

メソッドは、配列ベースの API とコレクションベースの API の間の橋渡し役として機能します。

定義:
インタフェース Collection<E> 内の toArray
オーバーライド:
クラス AbstractCollection<E> 内の toArray
戻り値:
両端キューのすべての要素が格納されている配列

toArray

public <T> T[] toArray(T[] a)
両端キュー内のすべての要素を適切な順序 (最初の要素から最後の要素へ) で格納している配列を返します。返される配列の実行時の型は、指定された配列の型になります。指定された配列に両端キューが収まる場合は、その中に返されます。そうでない場合は、指定された配列の実行時の型と両端キューのサイズを持つ新しい配列が割り当てられます。

両端キューが指定された配列に収まり、その配列にさらに余裕がある場合 (つまり、配列が両端キューより多くの要素を持つ場合)、その配列内で両端キューの終端よりあとの要素は null に設定されます。

toArray() メソッドと同じように、このメソッドは、配列ベースの API とコレクションベースの API の間の橋渡し役として機能します。さらに、このメソッドでは、出力配列の実行時の型を正確に制御できるため、環境によっては割り当ての手間を抑えることができます。

x が、文字列だけからなる両端キューであることがわかっていると仮定します。次のコードを使うと、新しく割り当てられた String の配列に両端キューをダンプできます。

String[] y = x.toArray(new String[0]);
toArray(new Object[0]) は、機能の点で toArray() と同一です。

定義:
インタフェース Collection<E> 内の toArray
オーバーライド:
クラス AbstractCollection<E> 内の toArray
パラメータ:
a - 配列が十分な大きさを持つ場合は、両端キューの要素が格納される配列。そうでない場合は、要素を格納するために同じ実行時の型の新しい配列が割り当てられる
戻り値:
両端キューのすべての要素が格納されている配列
例外:
ArrayStoreException - 指定された配列の実行時の型が、この両端キュー内のすべての要素の実行時の型のスーパータイプでない場合
NullPointerException - 指定された配列が null である場合

clone

public ArrayDeque<E> clone()
この両端キューの複製を返します。

オーバーライド:
クラス Object 内の clone
戻り値:
この両端キューのコピー
関連項目:
Cloneable

JavaTM Platform
Standard Ed. 6

バグの報告と機能のリクエスト
さらに詳しい API リファレンスおよび開発者ドキュメントについては、Java SE 開発者用ドキュメントを参照してください。開発者向けの詳細な解説、概念の概要、用語の定義、バグの回避策、およびコード実例が含まれています。

Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。