Está buscando cualquier clase que implemente el Queue interface, excluyendo PriorityQueue
y PriorityBlockingQueue
, que no utilizan un algoritmo FIFO.
Probablemente un LinkedList usando add
(agrega uno al final) y removeFirst
(quita uno del frente y lo devuelve) es el más fácil de usar.
Por ejemplo, aquí hay un programa que utiliza un LinkedList que hacer cola y recuperar los dígitos de PI:
import java.util.LinkedList;
class Test {
public static void main(String args[]) {
char arr[] = {3,1,4,1,5,9,2,6,5,3,5,8,9};
LinkedList<Integer> fifo = new LinkedList<Integer>();
for (int i = 0; i < arr.length; i++)
fifo.add (new Integer (arr[i]));
System.out.print (fifo.removeFirst() + ".");
while (! fifo.isEmpty())
System.out.print (fifo.removeFirst());
System.out.println();
}
}
alternativa, si sabe sólo desea tratarlo como una cola (sin las características adicionales de una lista enlazada), sólo puede utilizar la interfaz Queue
sí:
import java.util.LinkedList;
import java.util.Queue;
class Test {
public static void main(String args[]) {
char arr[] = {3,1,4,1,5,9,2,6,5,3,5,8,9};
Queue<Integer> fifo = new LinkedList<Integer>();
for (int i = 0; i < arr.length; i++)
fifo.add (new Integer (arr[i]));
System.out.print (fifo.remove() + ".");
while (! fifo.isEmpty())
System.out.print (fifo.remove());
System.out.println();
}
}
Esto tiene la ventaja de una lo que le permite reemplazar la clase concreta subyacente con cualquier clase que proporcione la interfaz Queue
, sin tener que cambiar demasiado el código.
Los cambios básicos son para cambiar el tipo de fifo
a un Queue
y utilizar remove()
en lugar de removeFirst()
, este último no esté disponible para la interfaz de Queue
.
Llamar a isEmpty()
sigue siendo correcto ya que pertenece a la interfaz Collection
de la cual Queue
es un derivado.
¿Por qué no hacer que fifo sea del tipo Queue? Apunte a la interfaz en lugar de la implementación concreta. –
@ Adam, buen punto, lo he proporcionado como una alternativa. – paxdiablo
Si solo desea iterar sobre los elementos en la cola de manera FIFO sin eliminar realmente los elementos, entonces puede hacer 'para (Objeto: cola)', y se repetirá sobre ellos de manera FIFO, en al menos en JDK 7 y con 'ArrayDeQueue' y' LinkedList' impl. –