2012-04-18 11 views
51

Necesito una cola FIFO simple implementada para almacenar un montón de ints (no me importa mucho si se trata de la implementación de genéricos).Implementaciones basadas en FIFO Queue?

¿Algo ya horneado para mí en java.util o en la biblioteca de Trove/Guava?

Respuesta

59

Sí. Queue

LinkedList siendo la implementación concreta más trivial.

+5

Observe que el Javadoc enumera todas las implementaciones. Además, el segundo enlace arriba de 'LinkedList' –

+2

' LinkedList' no es una interfaz; es una clase explícita. Alternativamente, 'ArrayDeque' es con frecuencia más rápido. –

+0

No necesito cambiar el tamaño de mi cola en cualquier momento, el número de elementos es siempre constante. –

2

Sí, estas cosas están incorporadas en java. Solo un ejemplo here. Haga una búsqueda en google sobre colas en Java, y eso es todo.

10

ArrayDeque es probablemente la cola basada en objetos más rápida en el JDK; Trove tiene la interfaz TIntQueue, pero no sé dónde viven sus implementaciones.

+0

sí TIntQueue no está implementado en ningún lado .. –

+5

Para que 'ArrayDeque' funcione como una cola (FIFO) en lugar de una pila (LIFO), debe usar' add' y 'remove'. Si usa 'push' y' pop', se comporta como una pila. (Estrictamente hablando, 'remove' y' pop' son iguales, pero como 'add/pop' o' push/remove' no suenan bien como pares, vamos con 'add/remove' y' push/pop' .) – ADTC

42

Aquí es código de ejemplo para el uso de de Java incorporado en la cola 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 es una interfaz que se extiende Collection en Java. Tiene todas las funciones necesarias para admitir la arquitectura FIFO.

Para la implementación concreta, puede usar LinkedList. LinkedList implementa Deque que a su vez implementa Queue. Todos estos son parte del paquete java.util.

Para obtener detalles sobre el método con el ejemplo de muestra, puede consultar FIFO based Queue implementation in Java.