私が試したとき:
Queue<Integer> q = new Queue<Integer>();
コンパイラがエラーを出しています。何か手助け?
また、キューを初期化したい場合は、キューのメソッドを実装する必要がありますか?
Queue
はインターフェースです。つまり、Queue
を直接作成することはできません。
次のいずれかのように、Queue
インタフェースをすでに実装しているクラスを作成するのが最善の方法です。AbstractQueue
、ArrayBlockingQueue
、ConcurrentLinkedQueue
、DelayQueue
LinkedBlockingQueue
、LinkedList
、PriorityBlockingQueue
、PriorityQueue
、またはSynchronousQueue
。
別の方法は必要なQueueインターフェースを実装するあなた自身のクラスを書くことです。プログラムの他の部分にQueue
を指定して特別なことをしたいというまれなケースを除いて、これは必要ありません。
public class MyQueue<T extends Tree> implements Queue<T> {
public T element() {
... your code to return an element goes here ...
}
public boolean offer(T element) {
... your code to accept a submission offer goes here ...
}
... etc ...
}
あまり使用されていない代替方法は、Queue
を実装する無名クラスを構築することです。あなたはおそらくこれをしたくないでしょう、しかしそれはすべてのベースをカバーするためのオプションとしてリストされています。
new Queue<Tree>() {
public Tree element() {
...
};
public boolean offer(Tree element) {
...
};
...
};
Queue
はインターフェースです。匿名の内部クラスを経由しない限り、直接インターフェースをインスタンス化することはできません。通常これはあなたがコレクションにしたいことではありません。代わりに、既存の実装を選択してください。例えば:
Queue<Integer> q = new LinkedList<Integer>();
または
Queue<Integer> q = new ArrayDeque<Integer>();
通常は、関心のあるパフォーマンスと並行性の特性によってコレクションの実装を選択します。
Queue<String> qe=new LinkedList<String>();
qe.add("b");
qe.add("a");
qe.add("c");
Queue
はインターフェースなので、図のようにそのインスタンスを作成することはできません。
Queueはインターフェースなので、Queueを明示的に構築することはできません。その実装クラスの1つをインスタンス化する必要があります。何かのようなもの:
Queue linkedList = new LinkedList();
Queueインタフェースは、次のような追加の挿入、抽出、および検査操作でJava.util.Collectionを拡張します。
+offer(element: E):
boolean //要素を挿入する
+poll(): E
//要素を取得し、キューが空の場合はNULLを返します
+remove(): E
//要素が取得されて削除され、キューが空の場合は例外がスローされます
+peek(): E
//このキューの先頭を取得しますが、削除しません。このキューが空の場合はnullを返します。
+element(): E
//このキューの先頭を取得しますが、削除しません。キューが空の場合は例外をスローします
Queueを実装するためのコード例:
Java.util.Queue<String> queue = new LinkedList<>();
queue.offer("Hello");
queue.offer("StackOverFlow");
queue.offer("User");
System.out.println(queue.peek());
while (queue.size() > 0){
System.out.println(queue.remove() + " ");
}
//Since Queue is empty now so this will return NULL
System.out.println(queue.peek());
コードの出力:
Hello
Hello
StackOverFlow
User
null
QueueはJavaのインターフェースです、それはできません。
代わりに、2つの選択肢があります。
オプション1:
Queue<Integer> Q = new LinkedList<>();
オプション2:
Queue<Integer> Q = new ArrayDeque<>();
それは他より少し速いので私はoption2を使うことを勧めます
Queue in Java はインターフェースとして定義されており、すぐに使用できる実装がJDKリリースの一部として存在しています。ここにいくつかあります: LinkedList 、優先度キュー、ArrayBlockingQueue、ConcurrentLinkedQueue、リンク転送キュー、 同期キュー など.
SOこれらのクラスのいずれかを作成し、それをQueue参照として保持することができます。例えば
import Java.util.LinkedList;
import Java.util.Queue;
public class QueueExample {
public static void main (String[] args) {
Queue que = new LinkedList();
que.add("first");
que.offer("second");
que.offer("third");
System.out.println("Queue Print:: " + que);
String head = que.element();
System.out.println("Head element:: " + head);
String element1 = que.poll();
System.out.println("Removed Element:: " + element1);
System.out.println("Queue Print after poll:: " + que);
String element2 = que.remove();
System.out.println("Removed Element:: " + element2);
System.out.println("Queue Print after remove:: " + que);
}
}
Queueインターフェースを実装する独自のカスタムQueueを実装することもできます。
Queue
はJavaのインタフェースです。できませんでした。試してみてください。
Queue<Integer> Q = new LinkedList<Integer>();