6
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Java】Queue、Deque、Stackの関係

Last updated at Posted at 2021-02-12

Deque(デック)は「double ended queue」(両端キュー)の略。
Queue、Deque、Stackのメソッドを比較できる図を作りました。(この図が意外と見つからなかった。)

  • 挿入(要素を挿入する)
  • 削除(要素を取得し削除する)
  • 検査(要素を取得するが削除しない)

メソッドにはそれぞれ、2つの形式があります。
1つは操作が失敗したときに例外をスローし、もう1つは特殊な値(操作に応じてnullまたはfalseのいずれか)を返します。

Queue

Queue

操作 位置 メソッド 説明
挿入 末尾 boolean add(E e) 要素が追加されなかった場合は例外をスロー
boolean offer(E e) 要素が追加されなかった場合はfalseを返す
削除 先頭 E remove() キューが空の場合はNoSuchElementExceptionをスロー
E poll() キューが空の場合はnullを返す
検査 先頭 E element() キューが空の場合はNoSuchElementExceptionをスロー
E peek() キューが空の場合はnullを返す

Deque

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

Stack

操作 位置 メソッド 説明
挿入 先頭 E add(E e) 追加した要素を返す
削除 先頭 E pop() スタックが空の場合はEmptyStackExceptionをスロー
検査 先頭 E peek() スタックが空の場合はEmptyStackExceptionをスロー

クラス図

主要なクラスを掲載。

alt

  • BlockingDeque: 要素の取得時に両端キューが空でなくなるまで待機、または要素の挿入時に両端キューに空きが生じるまで待機するようなブロック操作をサポートするDeque。
6
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?