Java の FIFO キュー
キューは、先入れ先出しの概念を実装する線形データ構造です。この概念は、最初に入る要素が最初に出てくることを意味します。
キュー
を表す専門用語は、フロントエンドとリアエンドを使用しています。要素は後端からキュー
に追加され、前から取り出されます。
コンセプトの実際の例は、最初の位置に立っている人が最初にチケットを取得するチケットカウンター列です。現在 Java では、概念またはデータ構造がキュー
インターフェースに実装されています。インターフェイスは java.util
パッケージに含まれています。
以下は、キュー構造を示すコードブロックです。
package F10;
import java.util.LinkedList;
import java.util.Queue;
public class Main {
public static void main(String[] args) {
Queue queue = new LinkedList<String>();
queue.add("First");
queue.add("Second");
queue.add("third");
System.out.println("Created Queue: " + queue);
String value = (String) queue.remove();
System.out.println("The element deleted from the head is: " + value);
System.out.println("The queue after deletion: " + queue);
String head = (String) queue.peek();
System.out.println("The head of the present queue is: " + head);
int size = queue.size();
System.out.println("The size of the queue is: " + size);
}
}
Java でキュー
データ構造を実装するには、さまざまな方法があります。上記のコードブロックでは、LinkedList
を使用して概念を実装しています。
まず、キュー
参照が new LinkedList
ステートメントを使用してインスタンス化されます。add
メソッドは Queue
インターフェースにあり、指定された要素を Queue
に挿入します。この関数は、値が追加されるとブール値 true
を返します。
サイズ制限のために要素を追加できない場合、メソッドは IllegalStateException
をスローする可能性があります。また、渡された値が null の場合、NullPointerException
をスローします。要素の最初のセットがリストに追加されると、キューが出力されます。System.out.println
ステートメントは、出力する必要のある文字列を受け取ります。
次に、remove
関数が Queue
インスタンスに対して呼び出されます。キューの先頭にある要素を削除するため、head 要素を返します。
頭にある要素も削除する同様の poll
関数があります。唯一の違いは、キューが空のときに NoSuchElementException
をスローする remove
関数にあります。削除された値は変数に格納され、出力されます。残りのキューは、残りの要素をチェックするために出力されます。
peek
関数は、キューの最上位の要素を取得し、それを削除しません。これは、キューの先頭にある要素をチェックする方法です。この関数はヘッド値を返し、キューが空になると NoSuchElementException
をスローします。size
関数は Collection
インターフェイスにあり、コレクションのサイズを返します。したがって、このメソッドは、キューに残っている要素のサイズを出力します。
出力:
Created Queue: [First, Second, third]
The element deleted from the head is: First
The Queue after deletion: [Second, third]
The head of the present Queue is: Second
The size of the Queue is: 2
Rashmi is a professional Software Developer with hands on over varied tech stack. She has been working on Java, Springboot, Microservices, Typescript, MySQL, Graphql and more. She loves to spread knowledge via her writings. She is keen taking up new things and adopt in her career.
LinkedIn