Java 中的 FIFO 类
我想通过Java中的类实现FIFO。
这样的类已经存在了吗?如果没有,我该如何实现我自己的?
注意
我在这里找到了一个 http://www.dcache.org/manuals/cells/docs/api/dmg/util/Fifo.html 类,但它不包含dmg.util.*。我不知道这样的软件包是否存在。
我想通过Java中的类实现FIFO。
这样的类已经存在了吗?如果没有,我该如何实现我自己的?
注意
我在这里找到了一个 http://www.dcache.org/manuals/cells/docs/api/dmg/util/Fifo.html 类,但它不包含dmg.util.*。我不知道这样的软件包是否存在。
您正在寻找任何实现队列接口的类,不包括 不使用 FIFO 算法的 和。PriorityQueue
PriorityBlockingQueue
可能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
基本更改是将 的类型更改为 a 并使用,而不是 ,后者对接口不可用。fifo
Queue
remove()
removeFirst()
Queue
调用仍然是可以的,因为它属于其接口是衍生物。isEmpty()
Collection
Queue
尝试 或 ,两者都实现接口。ArrayDeque
LinkedList
Queue
http://docs.oracle.com/javase/6/docs/api/java/util/ArrayDeque.html