Wenn ich es versuche:
Queue<Integer> q = new Queue<Integer>();
Der Compiler gibt mir einen Fehler. Irgendeine Hilfe?
Wenn ich eine Warteschlange initialisieren möchte, muss ich dann die Methoden der Warteschlange implementieren?
Wenn ich es versuche:
Queue<Integer> q = new Queue<Integer>();
Der Compiler gibt mir einen Fehler. Irgendeine Hilfe?
Wenn ich eine Warteschlange initialisieren möchte, muss ich dann die Methoden der Warteschlange implementieren?
Queue
ist eine Schnittstelle. grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/…Antworten:
A
Queue
ist eine Schnittstelle, dh Sie können keineQueue
direkt erstellen .Die beste Möglichkeit ist , eine Klasse zu konstruieren aus , dass bereits die implementiert
Queue
Schnittstelle, wie eine der folgenden:AbstractQueue
,ArrayBlockingQueue
,ArrayDeque
,ConcurrentLinkedQueue
,DelayQueue
,LinkedBlockingQueue
,LinkedList
,PriorityBlockingQueue
,PriorityQueue
, oderSynchronousQueue
.Eine Alternative besteht darin, eine eigene Klasse zu schreiben, die die erforderliche Warteschlangenschnittstelle implementiert. Es wird nicht benötigt, außer in den seltenen Fällen, in denen Sie etwas Besonderes tun möchten, während Sie dem Rest Ihres Programms eine
Queue
.Eine noch weniger verwendete Alternative besteht darin, eine anonyme Klasse zu erstellen, die implementiert wird
Queue
. Sie möchten dies wahrscheinlich nicht tun, aber es wird als Option aufgeführt, um alle Basen abzudecken.quelle
Queue
... aber trotzdem +1.ArrayDeque
Queue
ist eine Schnittstelle. Sie können eine Schnittstelle nur über eine anonyme innere Klasse direkt instanziieren. Normalerweise ist dies nicht das, was Sie für eine Sammlung tun möchten. Wählen Sie stattdessen eine vorhandene Implementierung. Beispielsweise:oder
In der Regel wählen Sie eine Sammlungsimplementierung anhand der Leistungs- und Parallelitätsmerkmale aus, an denen Sie interessiert sind.
quelle
Da
Queue
es sich um eine Schnittstelle handelt, können Sie keine Instanz davon erstellen, wie Sie dargestellt habenquelle
java.util.Queue
ist eine Schnittstelle. Sie können keine Schnittstellen instanziieren. Sie müssen eine Instanz einer Klasse erstellen, die diese Schnittstelle implementiert. In diesem Fall ist eine LinkedList eine solche Klasse.Stack<String> stack = new Stack<>(); stack.push("a"); stack.push("b"); System.out.println(stack.pop());
import java.util.Stack;
Die Warteschlange ist eine Schnittstelle. Sie können eine Warteschlange nicht explizit erstellen. Sie müssen eine der implementierenden Klassen instanziieren. Etwas wie:
Hier ist ein Link zum Java-Tutorial zu diesem Thema.
quelle
Die Warteschlangenschnittstelle erweitert java.util.Collection um zusätzliche Einfüge-, Extraktions- und Inspektionsvorgänge wie:
+offer(element: E):
boolean // Einfügen eines Elements+poll(): E
// Ruft das Element ab und gibt NULL zurück, wenn die Warteschlange leer ist+remove(): E
// Ruft das Element ab und entfernt es und löst eine Ausnahme aus, wenn die Warteschlange leer ist+peek(): E
// Ruft den Kopf dieser Warteschlange ab, entfernt ihn jedoch nicht und gibt null zurück, wenn diese Warteschlange leer ist.+element(): E
// Ruft den Kopf dieser Warteschlange ab, entfernt ihn jedoch nicht und löst eine Ausnahme aus, wenn die Warteschlange leer ist.Beispielcode für die Implementierung der Warteschlange:
Ausgabe des Codes:
quelle
Queue ist eine Schnittstelle in Java, das können Sie nicht.
Stattdessen haben Sie zwei Möglichkeiten:
Option 1:
Option 2:
Ich empfehle die Verwendung von Option2, da diese etwas schneller als die andere ist
quelle
Die Warteschlange in Java ist als Schnittstelle definiert und viele gebrauchsfertige Implementierungen sind als Teil der JDK-Version vorhanden. Hier sind einige: LinkedList , Priority Queue, ArrayBlockingQueue, ConcurrentLinkedQueue, Linked Transfer Queue, Synchronous Queue usw.
SO Sie können jede dieser Klassen erstellen und als Warteschlangenreferenz speichern. beispielsweise
Sie können auch Ihre eigene benutzerdefinierte Warteschlange implementieren, die die Warteschlangenschnittstelle implementiert.
quelle
Queue
ist eine Schnittstelle in Java, das konnte man nicht machen. Versuchen:quelle