2012-04-18 147 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