- 型パラメータ:
- E- この両端キューに保持されている要素の型
- すべてのスーパー・インタフェース:
- Collection<E>,- Iterable<E>,- Queue<E>
- 既知のすべてのサブインタフェース:
- BlockingDeque<E>
- 既知のすべての実装クラス:
- ArrayDeque,- ConcurrentLinkedDeque,- LinkedBlockingDeque,- LinkedList
Dequeのほとんどの実装では格納可能な要素の数に固定された制限はありませんが、このインタフェースでは、容量が制限された両端キューと、固定サイズ制限のない両端キューをサポートしています。 
 このインタフェースは、両端キューの両端にある要素にアクセスするメソッドを定義します。 要素を挿入、削除、および検査するためのメソッドが提供されています。 これらのメソッドにはそれぞれ、2つの形式があります。1つは操作が失敗したときに例外をスローし、もう1つは特殊な値(操作に応じてnullまたはfalseのいずれか)を返します。 後者の形式の挿入操作は、容量の制限されたDeque実装用として特別に設計されたものですが、ほとんどの実装では挿入操作は失敗できません。 
 
前述の12個のメソッドについて次の表にまとめます。
| 最初の要素(先頭) | 最後の要素(末尾) | |||
|---|---|---|---|---|
| 例外のスロー | 特殊な値 | 例外のスロー | 特殊な値 | |
| 挿入 | addFirst(e) | offerFirst(e) | addLast(e) | offerLast(e) | 
| 削除 | removeFirst() | pollFirst() | removeLast() | pollLast() | 
| 調査 | getFirst() | peekFirst() | getLast() | peekLast() | 
このインタフェースは、Queueインタフェースを拡張します。 両端キューがキューとして使用される場合、FIFO (先入れ先出し)動作になります。 要素は両端キューの末尾に追加され、先頭から削除されます。 Queueインタフェースから継承されたメソッドは、次の表に示すようにDequeメソッドと完全に等価です。 
 
| Queueメソッド | 等価な Dequeメソッド | 
|---|---|
| add(e) | addLast(e) | 
| offer(e) | offerLast(e) | 
| remove() | removeFirst() | 
| poll() | pollFirst() | 
| element() | getFirst() | 
| peek() | peekFirst() | 
両端キューは、LIFO (後入れ先出し)スタックとして使用することもできます。 .従来のStackクラスよりもこのインタフェースを優先して使用してください。 両端キューがスタックとして使用される場合、両端キューの先頭から要素のプッシュとポップが行われます。 スタック・メソッドは、次の表に示すようにDequeメソッドと同等です。 
 
| Stackメソッド | 等価な Dequeメソッド | 
|---|---|
| push(e) | addFirst(e) | 
| pop() | removeFirst() | 
| peek() | getFirst() | 
両端キューがキューまたはスタックとして使用される場合、peekメソッドも同様に機能します。どちらの場合も、要素は両端キューの先頭から取り出されます。
 
このインタフェースには、内部要素を削除するための2つのメソッドremoveFirstOccurrenceおよびremoveLastOccurrenceがあります。
 
Listインタフェースとは異なり、このインタフェースはインデックスで要素にアクセスするためのサポートを提供しません。
 
Deque実装では、null要素の挿入を禁止することが厳密には必要ありませんが、禁止することを強くお薦めします。 null要素が許可されたDeque実装のユーザーは、nullを挿入する機能を利用しないことを強くお薦めします。 これは、nullが両端キューが空であることを示すさまざまなメソッドによって特殊な戻り値として使用されるためです。 
 
通常、Deque実装は要素ベースのequalsメソッドおよびhashCodeメソッドを定義しませんが、Objectクラスからアイデンティティ・ベースのメソッドを継承します。
 
このインタフェースは、Java Collections Frameworkのメンバーです。
- 導入されたバージョン:
- 1.6
- 
メソッドのサマリー修飾子と型メソッド説明boolean指定された要素を、この両端キューで表されるキュー(つまり、この両端キューの末尾)に、容量制限に違反することなしにすぐに挿入できる場合には、そうします。成功した場合はtrueを返し、使用可能な空き領域がその時点で存在しない場合はIllegalStateExceptionをスローします。booleanaddAll(Collection<? extends E> c)指定されたコレクション内のすべての要素を、この両端キューの最後に、コレクション・イテレータによって返される順序で、それぞれaddLast(E)を呼び出すかのように追加します。void容量制限に違反することなく指定された要素をこの両端キューの先頭にすぐに挿入できる場合には、そうします。使用可能な空き領域がその時点で存在しない場合はIllegalStateExceptionをスローします。void容量制限に違反することなく指定された要素をこの両端キューの末尾にすぐに挿入できる場合には、そうします。使用可能な空き領域がその時点で存在しない場合はIllegalStateExceptionをスローします。boolean指定された要素がこの両端キューに含まれている場合にtrueを返します。この両端キュー内の要素を逆順で反復処理するイテレータを返します。element()この両端キューによって表されるキューの先頭(つまり、この両端キューの最初の要素)を取得しますが、削除しません。getFirst()この両端キューの最初の要素を取得しますが、削除はしません。getLast()この両端キューの最後の要素を取得しますが、削除はしません。iterator()この両端キュー内の要素を適切な順序で反復処理するイテレータを返します。boolean指定された要素を、この両端キューで表されるキュー(つまり、この両端キューの末尾)に、容量制限に違反することなしにすぐに挿入できる場合には、そうします。成功した場合はtrueを返し、使用可能な空き領域がその時点で存在しない場合はfalseを返します。booleanofferFirst(E e)容量制限に違反しないかぎり、指定された要素をこの両端キューの先頭に挿入します。boolean容量制限に違反しないかぎり、指定された要素をこの両端キューの末尾に挿入します。peek()この両端キューによって表されるキューの先頭(つまり、この両端キューの最初の要素)を取得しますが、削除しません。両端キューが空の場合は、nullを返します。この両端キューの最初の要素を取得しますが、削除しません。両端キューが空の場合はnullを返します。peekLast()この両端キューの最後の要素を取得しますが、削除しません。両端キューが空の場合はnullを返します。poll()この両端キューによって表されるキューの先頭(つまり、この両端キューの最初の要素)を取得および削除します。両端キューが空の場合は、nullを返します。この両端キューの最初の要素を取得および削除します。両端キューが空の場合はnullを返します。pollLast()この両端キューの最後の要素を取得および削除します。両端キューが空の場合はnullを返します。pop()この両端キューで表されるスタックに要素をポップします。void容量制限に違反することなしに要素をこの両端キューで表されるスタック(つまり、この両端キューの先頭)にすぐにプッシュできる場合は、そうします。使用可能な空き領域がその時点で存在しない場合はIllegalStateExceptionをスローします。remove()この両端キューによって表されるキューの先頭(つまり、この両端キューの最初の要素)を取得して削除します。boolean指定された要素のうち最初に出現したものを、この両端キューから削除します。この両端キューの最初の要素を取得して削除します。boolean指定された要素のうち最初に出現したものを、この両端キューから削除します。この両端キューの最後の要素を取得して削除します。boolean指定された要素のうち最後に出現したものを、この両端キューから削除します。intsize()この両端キュー内の要素の数を返します。インタフェース java.util.Collectionで宣言されたメソッドclear, containsAll, equals, hashCode, isEmpty, parallelStream, removeAll, removeIf, retainAll, spliterator, stream, toArray, toArray, toArray
- 
メソッドの詳細- 
addFirstvoid addFirst(E e)容量制限に違反することなく指定された要素をこの両端キューの先頭にすぐに挿入できる場合には、そうします。使用可能な空き領域がその時点で存在しない場合はIllegalStateExceptionをスローします。 容量制限のある両端キューを使用する場合、通常はofferFirst(E)メソッドを使用することをお薦めします。- パラメータ:
- e- 追加する要素
- 例外:
- IllegalStateException- 容量制限のために、この時点で要素を追加できない場合
- ClassCastException- 指定された要素のクラスが原因で、この両端キューにその要素を追加できない場合
- NullPointerException- 指定された要素がnullで、この両端キューがnull要素を許可しない場合
- IllegalArgumentException- 指定された要素のあるプロパティが原因で、この両端キューにその要素を追加できない場合
 
- 
addLastvoid addLast(E e)容量制限に違反することなく指定された要素をこの両端キューの末尾にすぐに挿入できる場合には、そうします。使用可能な空き領域がその時点で存在しない場合はIllegalStateExceptionをスローします。 容量制限のある両端キューを使用する場合、通常はofferLast(E)メソッドを使用することをお薦めします。このメソッドは、 add(E)と同等です。- パラメータ:
- e- 追加する要素
- 例外:
- IllegalStateException- 容量制限のために、この時点で要素を追加できない場合
- ClassCastException- 指定された要素のクラスが原因で、この両端キューにその要素を追加できない場合
- NullPointerException- 指定された要素がnullで、この両端キューがnull要素を許可しない場合
- IllegalArgumentException- 指定された要素のあるプロパティが原因で、この両端キューにその要素を追加できない場合
 
- 
offerFirstboolean offerFirst(E e)容量制限に違反しないかぎり、指定された要素をこの両端キューの先頭に挿入します。 容量制限のある両端キューを使用する場合、通常は、要素の挿入に失敗した場合に例外をスローするだけのaddFirst(E)メソッドよりもこのメソッドを使用することをお薦めします。- パラメータ:
- e- 追加する要素
- 戻り値:
- 要素がこの両端キューに追加された場合はtrue、それ以外の場合はfalse
- 例外:
- ClassCastException- 指定された要素のクラスが原因で、この両端キューにその要素を追加できない場合
- NullPointerException- 指定された要素がnullで、この両端キューがnull要素を許可しない場合
- IllegalArgumentException- 指定された要素のあるプロパティが原因で、この両端キューにその要素を追加できない場合
 
- 
offerLastboolean offerLast(E e)容量制限に違反しないかぎり、指定された要素をこの両端キューの末尾に挿入します。 容量制限のある両端キューを使用する場合、通常は、要素の挿入に失敗した場合に例外をスローするだけのaddLast(E)メソッドよりもこのメソッドを使用することをお薦めします。- パラメータ:
- e- 追加する要素
- 戻り値:
- 要素がこの両端キューに追加された場合はtrue、それ以外の場合はfalse
- 例外:
- ClassCastException- 指定された要素のクラスが原因で、この両端キューにその要素を追加できない場合
- NullPointerException- 指定された要素がnullで、この両端キューがnull要素を許可しない場合
- IllegalArgumentException- 指定された要素のあるプロパティが原因で、この両端キューにその要素を追加できない場合
 
- 
removeFirstE removeFirst()この両端キューの最初の要素を取得して削除します。 このメソッドは、両端キューが空の場合に例外をスローする点のみがpollFirstメソッドと異なります。- 戻り値:
- この両端キューの先頭
- 例外:
- NoSuchElementException- この両端キューが空の場合
 
- 
removeLastE removeLast()この両端キューの最後の要素を取得して削除します。 このメソッドは、両端キューが空の場合に例外をスローする点のみがpollLastメソッドと異なります。- 戻り値:
- この両端キューの末尾
- 例外:
- NoSuchElementException- この両端キューが空の場合
 
- 
pollFirstE pollFirst()この両端キューの最初の要素を取得および削除します。両端キューが空の場合はnullを返します。- 戻り値:
- この両端キューの先頭。この両端キューが空の場合はnull
 
- 
pollLastE pollLast()この両端キューの最後の要素を取得および削除します。両端キューが空の場合はnullを返します。- 戻り値:
- この両端キューの末尾。この両端キューが空の場合はnull
 
- 
getFirstE getFirst()この両端キューの最初の要素を取得しますが、削除はしません。 このメソッドは、両端キューが空の場合に例外をスローする点のみがpeekFirstメソッドと異なります。- 戻り値:
- この両端キューの先頭
- 例外:
- NoSuchElementException- この両端キューが空の場合
 
- 
getLastE getLast()この両端キューの最後の要素を取得しますが、削除はしません。 このメソッドは、両端キューが空の場合に例外をスローする点のみがpeekLastメソッドと異なります。- 戻り値:
- この両端キューの末尾
- 例外:
- NoSuchElementException- この両端キューが空の場合
 
- 
peekFirstE peekFirst()この両端キューの最初の要素を取得しますが、削除しません。両端キューが空の場合はnullを返します。- 戻り値:
- この両端キューの先頭。この両端キューが空の場合はnull
 
- 
peekLastE peekLast()この両端キューの最後の要素を取得しますが、削除しません。両端キューが空の場合はnullを返します。- 戻り値:
- この両端キューの末尾。この両端キューが空の場合はnull
 
- 
removeFirstOccurrenceboolean removeFirstOccurrence(Object o)指定された要素のうち最初に出現したものを、この両端キューから削除します。 その要素が両端キューにない場合、変更はありません。 より正式には、Objects.equals(o, e)(そのような要素が存在する場合)のような最初の要素eを削除します。 指定された要素がこの両端キューに含まれていた場合(すなわち、呼出しの結果としてこの両端キューが変更された場合)はtrueを返します。- パラメータ:
- o- この両端キューから削除される要素(その要素が存在する場合)
- 戻り値:
- この呼出しの結果として要素が削除された場合はtrue
- 例外:
- ClassCastException- 指定された要素のクラスが、この両端キューと互換でない場合(オプション)
- NullPointerException- 指定された要素がnullで、この両端キューがnull要素を許可しない場合(オプション)
 
- 
removeLastOccurrenceboolean removeLastOccurrence(Object o)指定された要素のうち最後に出現したものを、この両端キューから削除します。 その要素が両端キューにない場合、変更はありません。 より正式には、Objects.equals(o, e)(そのような要素が存在する場合)のような最後の要素eを削除します。 指定された要素がこの両端キューに含まれていた場合(すなわち、呼出しの結果としてこの両端キューが変更された場合)はtrueを返します。- パラメータ:
- o- この両端キューから削除される要素(その要素が存在する場合)
- 戻り値:
- この呼出しの結果として要素が削除された場合はtrue
- 例外:
- ClassCastException- 指定された要素のクラスが、この両端キューと互換でない場合(オプション)
- NullPointerException- 指定された要素がnullで、この両端キューがnull要素を許可しない場合(オプション)
 
- 
addboolean add(E e)指定された要素を、この両端キューで表されるキュー(つまり、この両端キューの末尾)に、容量制限に違反することなしにすぐに挿入できる場合には、そうします。成功した場合はtrueを返し、使用可能な空き領域がその時点で存在しない場合はIllegalStateExceptionをスローします。 容量制限のある両端キューを使用する場合、通常はofferを使用することをお薦めします。このメソッドは、 addLast(E)と同等です。- 定義:
- add、インタフェース:- Collection<E>
- 定義:
- add、インタフェース:- Queue<E>
- パラメータ:
- e- 追加する要素
- 戻り値:
- true(- Collection.add(E)で指定されているとおり)
- 例外:
- IllegalStateException- 容量制限のために、この時点で要素を追加できない場合
- ClassCastException- 指定された要素のクラスが原因で、この両端キューにその要素を追加できない場合
- NullPointerException- 指定された要素がnullで、この両端キューがnull要素を許可しない場合
- IllegalArgumentException- 指定された要素のあるプロパティが原因で、この両端キューにその要素を追加できない場合
 
- 
offerboolean offer(E e)指定された要素を、この両端キューで表されるキュー(つまり、この両端キューの末尾)に、容量制限に違反することなしにすぐに挿入できる場合には、そうします。成功した場合はtrueを返し、使用可能な空き領域がその時点で存在しない場合はfalseを返します。 容量制限のある両端キューを使用する場合、通常は、要素の挿入に失敗した場合に例外をスローするのみのadd(E)メソッドよりもこのメソッドを使用することをお薦めします。このメソッドは、 offerLast(E)と同等です。- 定義:
- offer、インタフェース:- Queue<E>
- パラメータ:
- e- 追加する要素
- 戻り値:
- 要素がこの両端キューに追加された場合はtrue、それ以外の場合はfalse
- 例外:
- ClassCastException- 指定された要素のクラスが原因で、この両端キューにその要素を追加できない場合
- NullPointerException- 指定された要素がnullで、この両端キューがnull要素を許可しない場合
- IllegalArgumentException- 指定された要素のあるプロパティが原因で、この両端キューにその要素を追加できない場合
 
- 
removeE remove()この両端キューによって表されるキューの先頭(つまり、この両端キューの最初の要素)を取得して削除します。 このメソッドは、両端キューが空の場合に例外をスローする点のみがpoll()メソッドと異なります。このメソッドは、 removeFirst()と同等です。- 定義:
- remove、インタフェース:- Queue<E>
- 戻り値:
- この両端キューで表されるキューの先頭
- 例外:
- NoSuchElementException- この両端キューが空の場合
 
- 
pollE poll()この両端キューによって表されるキューの先頭(つまり、この両端キューの最初の要素)を取得および削除します。両端キューが空の場合は、nullを返します。このメソッドは、 pollFirst()と同等です。
- 
elementE element()この両端キューによって表されるキューの先頭(つまり、この両端キューの最初の要素)を取得しますが、削除しません。 このメソッドは、両端キューが空の場合に例外をスローする点のみがpeekメソッドと異なります。このメソッドは、 getFirst()と同等です。- 定義:
- element、インタフェース:- Queue<E>
- 戻り値:
- この両端キューで表されるキューの先頭
- 例外:
- NoSuchElementException- この両端キューが空の場合
 
- 
peekE peek()この両端キューによって表されるキューの先頭(つまり、この両端キューの最初の要素)を取得しますが、削除しません。両端キューが空の場合は、nullを返します。このメソッドは、 peekFirst()と同等です。
- 
addAllboolean addAll(Collection<? extends E> c)指定されたコレクション内のすべての要素を、この両端キューの最後に、コレクション・イテレータによって返される順序で、それぞれaddLast(E)を呼び出すかのように追加します。容量制限付きの両端キューを使用する場合は、各要素ごとに offerを別々に呼び出す方が一般的に適しています。要素の追加中に例外が発生すると、関連する例外がスローされたときに要素の一部だけが正常に追加されることがあります。 - 定義:
- addAll、インタフェース:- Collection<E>
- パラメータ:
- c- この両端キューに挿入される要素
- 戻り値:
- この呼出しの結果、この両端キューが変更された場合はtrue
- 例外:
- IllegalStateException- 挿入制限のため、この時点で一部の要素を追加できない場合
- ClassCastException- 指定されたコレクションの要素のクラスがこの両端キューに追加できない場合
- NullPointerException- 指定されたコレクションがnull要素を含み、この両端キューがnull要素を許可しない場合、または指定されたコレクションがnullの場合
- IllegalArgumentException- 指定されたコレクションの要素のいくつかのプロパティが、この両端キューに追加できない場合
- 関連項目:
- Collection.add(Object)
 
- 
pushvoid push(E e)容量制限に違反することなしに要素をこの両端キューで表されるスタック(つまり、この両端キューの先頭)にすぐにプッシュできる場合は、そうします。使用可能な空き領域がその時点で存在しない場合はIllegalStateExceptionをスローします。このメソッドは、 addFirst(E)と同等です。- パラメータ:
- e- プッシュする要素
- 例外:
- IllegalStateException- 容量制限のために、この時点で要素を追加できない場合
- ClassCastException- 指定された要素のクラスが原因で、この両端キューにその要素を追加できない場合
- NullPointerException- 指定された要素がnullで、この両端キューがnull要素を許可しない場合
- IllegalArgumentException- 指定された要素のあるプロパティが原因で、この両端キューにその要素を追加できない場合
 
- 
popE pop()- 戻り値:
- この両端キューの先頭の要素(この両端キューによって表されるスタックの上部)
- 例外:
- NoSuchElementException- この両端キューが空の場合
 
- 
removeboolean remove(Object o)指定された要素のうち最初に出現したものを、この両端キューから削除します。 その要素が両端キューにない場合、変更はありません。 より正式には、Objects.equals(o, e)(そのような要素が存在する場合)のような最初の要素eを削除します。 指定された要素がこの両端キューに含まれていた場合(すなわち、呼出しの結果としてこの両端キューが変更された場合)はtrueを返します。このメソッドは、 removeFirstOccurrence(Object)と同等です。- 定義:
- remove、インタフェース:- Collection<E>
- パラメータ:
- o- この両端キューから削除される要素(その要素が存在する場合)
- 戻り値:
- この呼出しの結果として要素が削除された場合はtrue
- 例外:
- ClassCastException- 指定された要素のクラスが、この両端キューと互換でない場合(オプション)
- NullPointerException- 指定された要素がnullで、この両端キューがnull要素を許可しない場合(オプション)
 
- 
containsboolean contains(Object o)指定された要素がこの両端キューに含まれている場合にtrueを返します。 より正式には、この両端キューに、Objects.equals(o, e)のような少なくとも1つの要素eが含まれている場合に限り、trueを返します。- 定義:
- contains、インタフェース:- Collection<E>
- パラメータ:
- o- この両端キューにあるかどうかを調べる要素
- 戻り値:
- 指定された要素がこの両端キューに含まれている場合はtrue
- 例外:
- ClassCastException- 指定された要素のクラスが、この両端キューと互換でない場合(オプション)
- NullPointerException- 指定された要素がnullで、この両端キューがnull要素を許可しない場合(オプション)
 
- 
sizeint size()この両端キュー内の要素の数を返します。- 定義:
- size、インタフェース:- Collection<E>
- 戻り値:
- この両端キュー内の要素の数
 
- 
iteratorこの両端キュー内の要素を適切な順序で反復処理するイテレータを返します。 要素は最初(先頭)から最後(末尾)の順に返されます。
- 
descendingIteratorこの両端キュー内の要素を逆順で反復処理するイテレータを返します。 要素は最後(末尾)から最初(先頭)の順に返されます。- 戻り値:
- この両端キュー内の要素を逆順で反復処理するイテレータ
 
 
-