Java でキューをインスタンス化する
この記事では、Java で Queue オブジェクトをインスタンス化するメソッドを紹介します。このチュートリアルでは、インスタンス化されたオブジェクトからのメソッド呼び出しについてさらに説明し、実装します。キューはインターフェースであり、オブジェクトを直接作成することはできません。ただし、Queue インターフェイスをすでに実装しているクラスを実装することはできます。それらのクラスのいくつかは、AbstractQueue、ArrayDeque、DelayQueue、LinkedList です。したがって、このチュートリアルでは、LinkedList クラスと ArrayDeque クラスを使用してキューをインスタンス化します。
Java で LinkedList クラスを使用して Queue オブジェクトを実装する
LinkedList クラスは、LinkedList データ構造の概念を実装します。これはコレクションフレームワークの一部であり、java.util パッケージで利用できます。LinkedList の要素は、ポインターとアドレスの形式で格納されます。この要素はノードと呼ばれます。LinkedList でノードに直接アクセスすることはできません。ノードにアクセスするには、頭から始めて、アクセスしたいノードに到達するまでたどり着く必要があります。LinkedList は List インターフェイスを実装し、List インターフェイスとコレクションインターフェイスに存在するすべてのメソッドを継承します。キューも同じパッケージで利用できます。LinkedList クラスを実装する Queue のオブジェクトを作成できます。add() 関数を使用して、キュー内のデータを追加できます。
まず、import java.util.Queue と import java.util.LinkedList をそれぞれ使用して、Queue と LinkedList をインポートします。次に、クラス QueueDemo を作成し、main メソッドを宣言します。次に、LinkedList クラスを実装して、オブジェクト queue をインスタンス化します。オブジェクトを使用して add() メソッドを呼び出し、5つの整数値を追加します。最後に、キューの要素を出力します。
この例では、キューインターフェイスを実装する LinkedList クラスを使用してキューオブジェクトを作成しました。これは、キューがインターフェイスであり、そのオブジェクトを直接作成できないためです。整数値をキューに格納するため、オブジェクトの作成時にジェネリック型整数を指定しました。出力セクションには、キューに格納されている要素が表示されます。
サンプルコード:
import java.util.LinkedList;
import java.util.Queue;
public class QueueDemo {
public static void main(String[] args) {
Queue<Integer> queue = new LinkedList<>();
queue.add(8);
queue.add(9);
queue.add(10);
queue.add(2);
queue.add(5);
System.out.println("Added Queue in memory: " + queue);
}
}
出力:
Added Queue in memory: [8, 9, 10, 2, 5]
Java で ArrayDeque クラスを使用して Queue オブジェクトを実装する
Java 言語では、コレクションフレームワークの一部として ArrayDeque クラスが定義されています。16 個の要素を保持するのに十分な初期容量で、メモリ内に空の場所のセットを作成します。ArrayDeque は ArrayDouble Ended Queue とも呼ばれ、両側から要素を挿入または削除できます。スタック(後入れ先出し)またはキュー(先入れ先出し)を実装します。したがって、ArrayDeque クラスの実装で Queue のオブジェクトを作成できます。
上記のようにパッケージをインポートしますが、このメソッドでは、LinkedList ではなく ArrayDeque をインポートしてください。次に、クラス Demo を作成し、main メソッドを宣言します。次に、Queue インターフェイスをインスタンス化して、ArrayDeque クラスを実装します。Queue のオブジェクトを aq として作成します。aq オブジェクトを使用して、add() メソッドを 4 回呼び出します。4つの異なる文字列を追加します。最後に、aq オブジェクトを出力します。
以下の例では、オブジェクトの作成時にジェネリック型 String を使用しています。これは、キューに文字列アイテムを追加しているためです。したがって、ArrayDeque クラスを実装する Queue オブジェクトをインスタンス化しました。
コード例:
import java.util.ArrayDeque;
import java.util.Queue;
public class Demo {
public static void main(String[] args) {
Queue<String> aq = new ArrayDeque<String>();
aq.add("first");
aq.add("second");
aq.add("third");
aq.add("fourth");
System.out.println("Added Queue in memory: " + aq);
}
}
出力:
Added Queue in memory: [first, second, third, fourth]