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。