Java中的FIFO类

我想通过Java中的类实现FIFO。

这样的课程是否已经存在? 如果没有,我该如何执行我自己的?

注意

我在这里find了一个类http://www.dcache.org/manuals/cells/docs/api/dmg/util/Fifo.html ,但是它不包含dmg.util。*。 我不知道这样的包是否存在。

您正在寻找任何实现Queue接口的类 ,不包括PriorityQueuePriorityBlockingQueue ,它们不使用FIFOalgorithm。

可能是一个使用add的LinkedList (添加一个到最后)和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接口的类来replace底层的具体类,而不必更改代码。

基本的更改是将fifo的types更改为Queue并使用remove()而不是removeFirst() ,后者对于Queue接口不可用。

调用isEmpty()仍然可以,因为它属于Queue是派生类的Collection接口。

尝试ArrayDequeLinkedList ,它们都实现了Queue接口。

http://docs.oracle.com/javase/6/docs/api/java/util/ArrayDeque.html

队列 s是先进先出结构。 你的请求很模糊,但我猜测你只需要基本的function,这通常与Queue结构一起出现。 你可以看看你如何在这里实现它。

关于您丢失的软件包,很可能是因为您需要按照该教程自行下载或创build软件包。

您不必实现自己的FIFO队列,只需查看java.util.Queue接口及其实现即可

如果你想有一个pipe道来写/读数据,你可以使用http://docs.oracle.com/javase/6/docs/api/java/io/PipedWriter.html

你可以使用LinkedBlockingQueue我在我的项目中使用它。 这是标准的Java的一部分,很容易使用