前回はスタックを学びました。今回はキューです。
キューとは
キューは「先入れ先出し(FIFO: First In First Out)」のデータ構造です。 行列(並び列)のイメージで、最初に並んだものが最初に取り出されます。
よく使うメソッドは offer(追加)・poll(取り出し)・peek(確認)の3つです。
サンプルコード
ファイル作成
「Java57」フォルダに QueueSample.java という名前でファイルを作成します

コード入力
import java.util.ArrayDeque;
import java.util.Queue;
public class QueueSample {
public static void main(String[] args) {
Queue<String> queue = new ArrayDeque<>();
queue.offer("ぱんまる");
queue.offer("たろう");
queue.offer("はなこ");
System.out.println("size: " + queue.size());
System.out.println("peek: " + queue.peek());
System.out.println("poll: " + queue.poll());
System.out.println("poll: " + queue.poll());
System.out.println("size: " + queue.size());
// 実用例: 印刷キュー
System.out.println("\n--- 印刷キュー ---");
Queue<String> printQueue = new ArrayDeque<>();
printQueue.offer("レポート.pdf");
printQueue.offer("請求書.xlsx");
printQueue.offer("写真.png");
while (!printQueue.isEmpty()) {
System.out.println("印刷中: " + printQueue.poll());
}
System.out.println("すべての印刷が完了しました");
}
}

コンパイル
javac QueueSample.java

実行
java QueueSample
実行結果は次のようになります。
size: 3
peek: ぱんまる
poll: ぱんまる
poll: たろう
size: 1
--- 印刷キュー ---
印刷中: レポート.pdf
印刷中: 請求書.xlsx
印刷中: 写真.png
すべての印刷が完了しました

スタックとキューの違い
スタック: push/pop/peek → 後入れ先出し(LIFO)
キュー: offer/poll/peek → 先入れ先出し(FIFO)
どちらも ArrayDeque を使って実装できます。スタックとして使う場合は push/pop、キューとして使う場合は offer/poll を使い分けましょう。
まとめ
キューはFIFO(先入れ先出し)のデータ構造で、印刷キューやタスクの順番待ちなど「先に来たものを先に処理する」場面で活躍します。次回は階層構造を扱う「二分探索木」を解説します。
2026/08/17(月) ぱんまる


コメント