Caution
お使いのブラウザはJavaScriptが実行できない状態になっております。
当サイトはWebプログラミングの情報サイトの為、
JavaScriptが実行できない環境では正しいコンテンツが提供出来ません。
JavaScriptが実行可能な状態でご閲覧頂くようお願い申し上げます。
new LinkedList<>() / キュー.offer() / poll() / peek()
キューは先入れ先出し(FIFO: First In First Out)のデータ構造です。Javaでは『LinkedList』が Queue インターフェースを実装しており、キューとして利用できます。要素の追加に『offer()』、取り出しに『poll()』、確認に『peek()』を使用します。
構文
// LinkedList をキューとして作成します。 Queue<型> キュー名 = new LinkedList<>(); // 末尾に要素を追加します。 キュー.offer(要素); // 先頭の要素を取り出して削除します(空の場合は null)。 キュー.poll(); // 先頭の要素を削除せずに確認します(空の場合は null)。 キュー.peek(); // キューが空かどうかを確認します。 キュー.isEmpty();
メソッド一覧
| メソッド | 概要 |
|---|---|
| new LinkedList<>() | 双方向連結リストに基づくキュー(またはデキュー)を作成します。 |
| offer(E e) | 末尾に要素を追加します。追加に成功した場合は true を返します。 |
| poll() | 先頭の要素を取り出して削除します。キューが空の場合は null を返します。 |
| peek() | 先頭の要素を削除せずに返します。キューが空の場合は null を返します。 |
| isEmpty() | キューが空かどうかを boolean 型で返します。 |
サンプルコード
import java.util.LinkedList;
import java.util.Queue;
Queue<String> queue = new LinkedList<>();
// 末尾に要素を追加します。
queue.offer("first");
queue.offer("second");
queue.offer("third");
// 先頭の要素を確認します(削除しない)。
System.out.println(queue.peek()); // 『first』と出力されます。
// 先頭の要素を取り出します(削除される)。
System.out.println(queue.poll()); // 『first』と出力されます。
System.out.println(queue.poll()); // 『second』と出力されます。
// サイズを確認します。
System.out.println(queue.size()); // 『1』と出力されます。
// 全要素を順番に取り出します。
Queue<Integer> numQueue = new LinkedList<>();
numQueue.offer(10);
numQueue.offer(20);
numQueue.offer(30);
while (!numQueue.isEmpty()) {
System.out.println(numQueue.poll()); // 『10』『20』『30』と順に出力されます。
}
概要
『offer()』と『add()』はどちらも要素を追加しますが、容量制限のあるキューで追加できない場合、『offer()』は false を返し、『add()』は例外をスローします。通常は安全な『offer()』を使用することを推奨します。
同様に、『poll()』と『remove()』はどちらも先頭を取り出しますが、空のキューに対して『remove()』は例外をスローし、『poll()』は null を返します。取り出し前に『isEmpty()』で確認するか、『poll()』を使用してください。
スタック・両端キューの操作については『new ArrayDeque<>() / push() / pop()』を参照してください。
記事の間違いや著作権の侵害等ございましたらお手数ですがこちらまでご連絡頂ければ幸いです。