【プログラミングしてみよう69】Javaでデータ構造入門②キュー

Java

前回はスタックを学びました。今回はキューです。

キューとは

キューは「先入れ先出し(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(月) ぱんまる

コメント

タイトルとURLをコピーしました