new LinkedList<>() / キュー.offer() / poll() / peek()
| 対応: | Java 5(2004) |
|---|
キューは先入れ先出し(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 型で返します。 |
サンプルコード
sample_QueueOfferPoll.java
import java.util.LinkedList;
import java.util.Queue;
class QueueOfferPoll {
public static void main(String[] args) {
Queue<String> queue = new LinkedList<>();
// 末尾に要素を追加します。
queue.offer("狡噛慎也");
queue.offer("常守朱");
queue.offer("宜野座伸元");
// 先頭の要素を確認します(削除しない)。
System.out.println(queue.peek()); // 『狡噛慎也』と出力されます。
// 先頭の要素を取り出します(削除される)。
System.out.println(queue.poll()); // 『狡噛慎也』と出力されます。
System.out.println(queue.poll()); // 『常守朱』と出力されます。
// サイズを確認します。
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』と順に出力されます。
}
}
}
javac QueueOfferPoll.java java QueueOfferPoll 狡噛慎也 狡噛慎也 常守朱 1 10 20 30
概要
『offer()』と『add()』はどちらも要素を追加しますが、容量制限のあるキューで追加できない場合、『offer()』は false を返し、『add()』は例外をスローします。通常は安全な『offer()』を使用することを推奨します。
同様に、『poll()』と『remove()』はどちらも先頭を取り出しますが、空のキューに対して『remove()』は例外をスローし、『poll()』は null を返します。取り出し前に『isEmpty()』で確認するか、『poll()』を使用してください。
スタック・両端キューの操作については『new ArrayDeque<>() / push() / pop()』を参照してください。
記事の間違いや著作権の侵害等ございましたらお手数ですがこちらまでご連絡頂ければ幸いです。