Javaでキューを使う方法を現役エンジニアが解説【初心者向け】

初心者向けにJavaでキューを使う方法について解説しています。最初に複数のデータを扱うデータ型キューの基本と宣言方法を説明します。次に値を追加する方法、値を取り出す方法、値を参照する方法を覚えましょう。

TechAcademyマガジンはオンラインのプログラミングスクールTechAcademy [テックアカデミー]が運営。初心者向けに解説した記事が4,000以上あります。現役エンジニアの方はこちらをご覧ください。

Javaでキューを使う方法について、TechAcademyのメンター(現役エンジニア)が実際のコードを使用して初心者向けに解説します。

Javaについてそもそもよく分からないという方は、Javaとは何なのか解説した記事を読むとさらに理解が深まります。

 

なお本記事は、TechAcademyのオンラインブートキャンプ、Java講座の内容をもとに作成しています。

 

田島悠介

今回は、Javaに関する内容だね!

大石ゆかり

どういう内容でしょうか?

田島悠介

キューを使う方法について詳しく説明していくね!

大石ゆかり

お願いします!

 

目次

 

キューとは

まず、「キュー」というデータ型とその特徴について説明します。キューは、複数のデータを保持する配列のようなもので、その特徴についてよく言われるのは、

  • 先入れ先出し
  •  ”Firsr In Fisrst Out”(FIFO)

などです。データを入れたら、入れた順に取り出さなければ行けないのがキューというデータ型です。イメージとしては、下の画像のような感じです。

 

 

[PR] Javaで挫折しない学習方法を動画で公開中

Queueの使い方

Javaにはキューを使うためのデータ型が用意されていて、それがQueue型というものです。Queue型を宣言するためには、

Queue<データの型名> Queue型の変数名 = new ArrayDeque<>();

とします。あとは、値を追加する方法、値を取り出す方法、そして、値を参照する方法、がわかればQueue型を自由に使いこなすことができます。

それぞれについてメソッドが用意されているので順に解説していきます。

 

値を追加する方法

Queue型を宣言した後、値を追加していきます。値の追加のためのメソッドとしては、addメソッドが用意されています。

Queue型.add(追加したいデータ);

とすることで、データを追加していくことができます。

 

値を取り出す方法

続いては、値を取り出す方法です。値を取り出すメソットは、pollメソッドというもので、

Queue型.poll();

として使います。通常の配列や、List型などと異なり、インデックスなどのデータを指定することはできません。

最初に説明したように、Queue型は「先入れ先出し」なので、一番古いデータ(一番前に入れたデータ)がpollメソッドで取得できます。

値を取り出すと、その値はもうQueue型には保持されないので、もう一度pollメソッドを使うと次のデータが取得できます。

 

値を参照する方法

最後に、データを取り出したくはないけど、確認したい場合の、値を参照する方法についてです。値を参照するメソッドとして、peekメソッドが用意されています。

このメソッドは、

Queue.peek();

とすることで、pollメソッドを使った場合にどのような値が取得できるかを確認できます。この場合は、データを取り出しているわけではないので、何回実行しても同じ値を取得できます。

 

実際に書いてみよう

それでは、Queue型を使うプログラムを書いてみて、振る舞いを確認してみましょう。

import java.util.ArrayDeque;
import java.util.Queue;

class QueueSample{
        public static void main(String args[]){

                //Queue型の宣言
                 Queue<String> queue = new ArrayDeque<>();

                 //データを追加
                 queue.add("砂糖");
                 queue.add("塩");
                 queue.add("酢");
                 queue.add("醤油");
                 queue.add("味噌");
 
                 //Queueのデータを確認
                 System.out.print("データを取り出す前: ");
                 System.out.println(queue);
 
                 //データを取り出し
                 System.out.print("pollメソッドで取得したデータ: ");
                 System.out.println(queue.poll());        
                 System.out.print("pollメソッドのあと: ");
                 System.out.println(queue);

                //データの参照
                 System.out.print("peekメソッドで参照したデータ: ");
                 System.out.println(queue.peek());
                 System.out.print("peekメソッドのあと: ");
                 System.out.println(queue); 
         }
}

これを実行すると、

データを取り出す前: [砂糖, 塩, 酢, 醤油, 味噌]
pollメソッドで取得したデータ: 砂糖
pollメソッドのあと: [塩, 酢, 醤油, 味噌]
peekメソッドで参照したデータ: 塩
peekメソッドのあと: [塩, 酢, 醤油, 味噌]

と表示されて、それぞれのメソッドによるQueue型の変化の違いについて確認できます。データを変えたり、メソッドを使う回数を増やしてみたりして、Queue型のふるまいを確認してみてください。

 

まとめ

この記事では、Javaにおける「先入れ先出し」のデータ型であるQueue型について解説しました。キューの概念は情報処理における欠かせない概念なので、理解しておくと良いでしょう。

 

監修してくれたメンター

小倉翔悟 (おぐらしょうご)

AIプログラミングを使って開発を行う大学3年生。プログラミング歴は約3年。Pythonは割と好きな方。JavaもAndroid開発で触れていたりする。

大学では物理学を勉強中。好きな物理理論は一般相対性理論らしい。

意外と動物が好きだったり、、、。

 

大石ゆかり

内容分かりやすくて良かったです!

田島悠介

ゆかりちゃんも分からないことがあったら質問してね!

大石ゆかり

分かりました。ありがとうございます!

TechAcademyでは、初心者でも最短4週間で、JavaやServletの技術を使ってWebアプリケーション開発を習得できる、オンラインブートキャンプを開催しています。

 

また、現役エンジニアから学べる無料体験も実施しているので、ぜひ参加してみてください。