2012-04-18 150 views
51

我需要一个简单的FIFO实现队列来存储一串整数(如果它是泛型实现,我不介意)。基于FIFO的队列实现?

任何已经在java.util或Trove/Guava图书馆为我烘焙的东西?

回答

59

是的。 Queue

LinkedList是最琐碎的具体实现。

+5

请注意,Javadoc列出了所有的实现。此外,它上面的第二个链接“LinkedList” – 2012-04-18 16:26:54

+2

“LinkedList”不是一个接口;这是一个明确的阶级。或者,'ArrayDeque'通常更快。 – 2012-04-18 16:26:55

+0

我不需要随时调整队列大小,元素的数量总是不变。 – 2012-04-18 16:36:30

2

是的,这些东西都内置java。只有一个例子here。有一个关于Java中的队列的谷歌搜索,就是这样。

10

ArrayDeque可能是JDK中最快的基于对象的队列; Trove有TIntQueue接口,但我不知道它的实现在哪里。

+0

耶TIntQueue没有在任何地方实现.. – 2012-04-18 16:32:40

+5

对于'ArrayDeque'来充当一个队列(FIFO)而不是一个堆栈(LIFO),你应该使用'add'和'remove'。如果你使用'push'和'pop',它表现得像一个堆栈。 (严格地说,'remove'和'pop'是一样的,但是由于add/pop或push/remove并不像pair那样好,我们用'add/remove'和'push/pop' 。) – ADTC 2015-01-22 10:36:14

42

下面是用法示例代码Java的内置FIFO队列:

public static void main(String[] args) { 
     Queue<Integer> myQ=new LinkedList<Integer>(); 
     myQ.add(1); 
     myQ.add(6); 
     myQ.add(3); 
     System.out.println(myQ); //1 6 3 
     int first=myQ.poll();// retrieve and remove the first element 
     System.out.println(first);//1 
     System.out.println(myQ);//6 3 
     } 
4

Queue是用Java扩展Collection的接口。它具有支持FIFO体系结构所需的所有功能。您可以使用LinkedList。 LinkedList执行Deque,后者又执行Queue。所有这些都是java.util包的一部分。

有关示例示例的方法的详细信息,请参阅FIFO based Queue implementation in Java