你正在寻找任何实现
Queue interface的类,不包括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 fifo = new LinkedList();
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();
}
}
或者,如果您知道您只想将其视为队列(没有链接列表的额外功能),您可以只使用队列接口本身:
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 fifo = new LinkedList();
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的类型更改为队列,并使用remove()而不是removeFirst(),后者不能用于Queue接口。
调用isEmpty()仍然可以,因为它属于哪个Queue是派生的Collection接口。