Deque(デック)は「double ended queue」(両端キュー)の略。
Queue、Deque、Stackのメソッドを比較できる図を作りました。(この図が意外と見つからなかった。)
- 挿入(要素を挿入する)
- 削除(要素を取得し削除する)
- 検査(要素を取得するが削除しない)
メソッドにはそれぞれ、2つの形式があります。
1つは操作が失敗したときに例外をスローし、もう1つは特殊な値(操作に応じてnullまたはfalseのいずれか)を返します。
Queue
| 操作 | 位置 | メソッド | 説明 |
|---|---|---|---|
| 挿入 | 末尾 | boolean add(E e) | 要素が追加されなかった場合は例外をスロー |
| boolean offer(E e) | 要素が追加されなかった場合はfalseを返す | ||
| 削除 | 先頭 | E remove() | キューが空の場合はNoSuchElementExceptionをスロー |
| E poll() | キューが空の場合はnullを返す | ||
| 検査 | 先頭 | E element() | キューが空の場合はNoSuchElementExceptionをスロー |
| E peek() | キューが空の場合はnullを返す |
Deque
| 操作 | 位置 | メソッド | 説明 |
|---|---|---|---|
| 挿入 | 末尾 | boolean add(E e) | 要素が追加されなかった場合は例外をスロー |
| void addLast(E e) | 〃 | ||
| boolean offer(E e) | 要素が追加されなかった場合はfalseを返す | ||
| boolean offerLast(E e) | 〃 | ||
| 先頭 | void push(E e) | 要素が追加されなかった場合は例外をスロー | |
| void addFirst(E e) | 〃 | ||
| boolean offerFirst(E e) | 要素が追加されなかった場合はfalseを返す | ||
| 削除 | 末尾 | E removeLast() | 両端キューが空の場合はNoSuchElementExceptionをスロー |
| E pollLast() | 両端キューが空の場合はnullを返す | ||
| 先頭 | E remove() | 両端キューが空の場合はNoSuchElementExceptionをスロー | |
| E removeFirst() | 〃 | ||
| E poll() | 両端キューが空の場合はnullを返す | ||
| E pollFirst() | 〃 | ||
| 検査 | 末尾 | E getLast() | 両端キューが空の場合はNoSuchElementExceptionをスロー |
| E peekLast() | 両端キューが空の場合はnullを返す | ||
| 先頭 | E element() | 両端キューが空の場合はNoSuchElementExceptionをスロー | |
| E getFirst() | 〃 | ||
| E peek() | 両端キューが空の場合はnullを返す | ||
| E peekFirst() | 〃 |
Stack
| 操作 | 位置 | メソッド | 説明 |
|---|---|---|---|
| 挿入 | 先頭 | E add(E e) | 追加した要素を返す |
| 削除 | 先頭 | E pop() | スタックが空の場合はEmptyStackExceptionをスロー |
| 検査 | 先頭 | E peek() | スタックが空の場合はEmptyStackExceptionをスロー |
クラス図
主要なクラスを掲載。
- BlockingDeque: 要素の取得時に両端キューが空でなくなるまで待機、または要素の挿入時に両端キューに空きが生じるまで待機するようなブロック操作をサポートするDeque。