Вы ищете любой класс, который реализует интерфейс Queue , исключая PriorityQueue
и PriorityBlockingQueue
, которые не используют алгоритм FIFO.
Вероятно, LinkedList с использованием add
(добавляет один в конец) и removeFirst
(удаляет один спереди и возвращает его) является самым простым в использовании.
Например, вот программа, которая использует LinkedList для постановки в очередь и получения цифр 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();
}
}
В качестве альтернативы, если вы знаете , вы хотите рассматривать его только как очередь (без дополнительных функций связанного списка), вы можете просто использовать сам интерфейс Queue
:
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();
}
}
Преимущество этого состоит в том, что вы можете заменить базовый конкретный класс любым классом, предоставляющим интерфейс Queue
, без необходимости слишком сильно изменять код.
Основные изменения: изменить тип fifo
на Queue
и использовать remove()
вместо removeFirst()
, причем последнее недоступно для интерфейса Queue
.
Вызов isEmpty()
все еще в порядке, поскольку он относится к интерфейсу Collection
, производным которого является Queue
.