2012-04-18 10 views
51

Ich brauche eine einfache FIFO-implementierte Warteschlange zum Speichern einer Reihe von Ints (mir ist es egal, wenn es Generika-Implementierung ist).FIFO-basierte Queue-Implementierungen?

Alles schon gebacken für mich in java.util oder Trove/Guava-Bibliothek?

Antwort

59

Ja. Queue

LinkedList ist die trivialste konkrete Implementierung.

+5

Beachten Sie, dass der Javadoc alle Implementierungen auflistet. Auch der zweite Link über 'LinkedList' –

+2

'LinkedList' ist keine Schnittstelle; es ist eine explizite Klasse. Alternativ ist 'ArrayDeque' häufig schneller. –

+0

Ich brauche meine Größe nicht zu ändern, das Element ist immer konstant. –

2

Ja, diese Dinge sind eingebaute Java. Nur ein Beispiel here. Haben Sie eine Google-Suche über Warteschlangen in Java, und das ist es.

10

ArrayDeque ist wahrscheinlich die schnellste objektbasierte Warteschlange im JDK; Trove hat die TIntQueue Schnittstelle, aber ich weiß nicht, wo seine Implementierungen leben.

+0

yeah TIntQueue ist nirgends implementiert .. –

+5

Damit'ArrayDeque' als Warteschlange (FIFO) und nicht als Stapel (LIFO) funktioniert, sollten Sie 'add' und' remove' verwenden. Wenn Sie 'push' und' pop' verwenden, verhält es sich wie ein Stapel. (Streng genommen sind 'remove' und' pop' identisch, aber da 'add/pop' oder' push/remove' nicht gut als Paare klingen, verwenden wir 'add/remove' und' push/pop' .) – ADTC

42

Hier ist Beispielcode für die Verwendung von Java-internen FIFO-Warteschlange:

public static void main(String[] args) { 
     Queue<Integer> myQ=new LinkedList<Integer>(); 
     myQ.add(1); 
     myQ.add(6); 
     myQ.add(3); 
     System.out.println(myQ); //1 6 3 
     int first=myQ.poll();// retrieve and remove the first element 
     System.out.println(first);//1 
     System.out.println(myQ);//6 3 
     } 
4

Queue ist eine Schnittstelle, die Collection in Java erweitert. Es hat alle Funktionen, die benötigt werden, um die Architektur FIFO zu unterstützen.

Für die konkrete Implementierung können Sie LinkedList verwenden. LinkedList implementiert Deque, die wiederum Queue implementiert. Alle diese sind ein Teil von java.util Paket.

Für Einzelheiten über die Methode mit Beispielbeispiel können Sie sich beziehen FIFO based Queue implementation in Java.