2012-04-18 18 views
51

Ho bisogno di una semplice coda FIFO implementata per l'archiviazione di una serie di int (non mi interessa molto se si tratta di un'implementazione generica).Implementazioni coda basate su FIFO?

Qualcosa già cotto per me nella libreria java.util o Trove/Guava?

risposta

59

Sì. Queue

LinkedList essere la più concreta attuazione concreta.

+5

Si noti che Javadoc elenca tutte le implementazioni. Inoltre, il secondo link sopra a 'LinkedList' –

+2

' LinkedList' non è un'interfaccia; è una classe esplicita. In alternativa, 'ArrayDeque' è spesso più veloce. –

+0

Non ho bisogno di ridimensionare la mia coda in qualsiasi momento, il no di elemnts è sempre costante. –

2

Sì, queste cose sono java incorporate. Solo un esempio here. Fai una ricerca su google sulle code in java, e questo è tutto.

10

ArrayDeque è probabilmente la coda più veloce basata su oggetti nel JDK; Trove ha l'interfaccia TIntQueue, ma non so dove siano attive le sue implementazioni.

+0

sì TIntQueue non è implementato da nessuna parte .. –

+5

Affinché 'ArrayDeque' funzioni come una coda (FIFO) piuttosto che una pila (LIFO), dovresti usare' add' e 'remove'. Se usi 'push' e' pop', si comporta come una pila. (In senso stretto, 'remove' e' pop' sono gli stessi, ma dato che 'add/pop' o' push/remove' non suonano bene come coppie, usiamo 'aggiungi/rimuovi' e' push/pop' .) – ADTC

42

Ecco esempio di codice per l'utilizzo di Java built-in coda FIFO:

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 è un'interfaccia che si estende Collection in Java. Ha tutte le funzioni necessarie per supportare l'architettura FIFO.

Per l'implementazione concreta è possibile utilizzare LinkedList. LinkedList implementa Deque che a sua volta implementa Queue. Tutti questi sono una parte del pacchetto java.util.

Per dettagli sul metodo con esempio di esempio è possibile fare riferimento a FIFO based Queue implementation in Java.