Queue インターフェースは java.util パッケージで使用でき、Collection インターフェースを拡張します。これは、先入れ先出し (FIFO) 方式で処理される要素を保持するために使用されます。これはオブジェクトの順序付きリストであり、要素の挿入はリストの最後に行われ、要素の削除はリストの先頭に行われます。
キューはインターフェイスであるため、宣言には具象クラスが必要です。最も一般的なクラスは Java の LinkedList と PriorityQueue です。これらのクラスによって行われる実装はスレッド セーフではありません。スレッドセーフな実装が必要な場合は、PriorityBlockingQueue が使用可能なオプションです。
キューインターフェース宣言
public interface Queue extends Collection
Javaキューインターフェースのメソッド
方法 | 説明 |
---|---|
ブール値の追加(オブジェクト) | これは、指定された要素をこのキューに挿入し、成功時に true を返すために使用されます。 |
ブール値のオファー(オブジェクト) | 指定された要素をこのキューに挿入するために使用されます。 |
オブジェクトの削除() | このキューの先頭を取得して削除するために使用されます。 |
オブジェクトのポーリング() | このキューの先頭を取得して削除するために使用されます。このキューが空の場合は null を返します。 |
オブジェクト要素() | このキューの先頭を取得するために使用されますが、削除はされません。 |
オブジェクトのピーク() | このキューの先頭を取得するために使用されますが、削除はされません。このキューが空の場合は null を返します。 |
キューの特徴
以下に、キューの重要な機能をいくつか示します。
- 前に説明したように、FIFO の概念はキューへの要素の挿入と削除に使用されます。
- Java キューは、削除、挿入などを含む Collection インターフェースのすべてのメソッドのサポートを提供します。
- PriorityQueue、ArrayBlockingQueue、および LinkedList は、最も頻繁に使用される実装です。
- BlockingQueue に対して null 操作が行われた場合、NullPointerException が発生します。
- に存在するキューは、 ユーティリティ パッケージは無制限のキューとして知られています。
- に存在するキューは、 役に立つ パッケージは、境界付きキューとして知られています。
- Deque を除くすべてのキューにより、キューの先頭と末尾での削除と挿入が容易になります。それぞれ。実際、両端キューは両端で要素の挿入と削除をサポートします。
PriorityQueueクラス
PriorityQueue は、優先度に基づいてオブジェクトを処理する方法を提供するコレクション フレームワークで定義されるクラスでもあります。オブジェクトの挿入と削除は Java キューの FIFO パターンに従うことはすでに説明しました。ただし、キューの要素を優先度に従って処理する必要がある場合があります。そこで、PriorityQueue が機能します。
PriorityQueue クラスの宣言
java.util.PriorityQueue クラスの宣言を見てみましょう。
public class PriorityQueue extends AbstractQueue implements Serializable
Java PriorityQueueの例
ファイル名: テストコレクション12.java
import java.util.*; class TestCollection12{ public static void main(String args[]){ PriorityQueue queue=new PriorityQueue(); queue.add('Amit'); queue.add('Vijay'); queue.add('Karan'); queue.add('Jai'); queue.add('Rahul'); System.out.println('head:'+queue.element()); System.out.println('head:'+queue.peek()); System.out.println('iterating the queue elements:'); Iterator itr=queue.iterator(); while(itr.hasNext()){ System.out.println(itr.next()); } queue.remove(); queue.poll(); System.out.println('after removing two elements:'); Iterator itr2=queue.iterator(); while(itr2.hasNext()){ System.out.println(itr2.next()); } } }今すぐテストしてください
出力:
head:Amit head:Amit iterating the queue elements: Amit Jai Karan Vijay Rahul after removing two elements: Karan Rahul Vijay
Java PriorityQueue の例: 書籍
書籍をキューに追加し、すべての書籍を印刷する PriorityQueue の例を見てみましょう。 PriorityQueue の要素は Comparable タイプである必要があります。 String クラスと Wrapper クラスはデフォルトで Comparable です。 PriorityQueue にユーザー定義オブジェクトを追加するには、Comparable インターフェイスを実装する必要があります。
ファイル名: LinkedListExample.java
import java.util.*; class Book implements Comparable{ int id; String name,author,publisher; int quantity; public Book(int id, String name, String author, String publisher, int quantity) { this.id = id; this.name = name; this.author = author; this.publisher = publisher; this.quantity = quantity; } public int compareTo(Book b) { if(id>b.id){ return 1; }else if(id <b.id){ return -1; }else{ 0; } public class linkedlistexample { static void main(string[] args) queue priorityqueue(); creating books book b1="new" book(121,'let us c','yashwant kanetkar','bpb',8); b2="new" book(233,'operating system','galvin','wiley',6); b3="new" book(101,'data communications & networking','forouzan','mc graw hill',4); adding to the queue.add(b1); queue.add(b2); queue.add(b3); system.out.println('traversing elements:'); traversing elements for(book b:queue){ system.out.println(b.id+' '+b.name+' '+b.author+' '+b.publisher+' '+b.quantity); queue.remove(); system.out.println('after removing one record:'); < pre> <p> <strong>Output:</strong> </p> <pre>Traversing the queue elements: 101 Data Communications & Networking Forouzan Mc Graw Hill 4 233 Operating System Galvin Wiley 6 121 Let us C Yashwant Kanetkar BPB 8 After removing one book record: 121 Let us C Yashwant Kanetkar BPB 8 233 Operating System Galvin Wiley 6 </pre> <hr></b.id){>