java 中隊列的使用

剛纔看見羣裏的一個朋友在問隊列的使用,確實在現實的寫代碼中很少使用隊列的,反正我是從來沒使用過。只是學數據結構的時候學過。

下面是我寫的一個小例子,希望有不足之處請提出改正。O(∩_∩)O~

看代碼:

  1. import java.util.LinkedList;  
  2. import java.util.Queue;  
  3.   
  4. public class TestQueue  
  5. {  
  6.     /** 
  7.      * @param args 
  8.      * @author JavaAlpha 
  9.      * Info 測試隊列 
  10.      */  
  11.     public static void main(String[] args)  
  12.     {  
  13.         Queue<String> queue = new LinkedList<String>();  
  14.         queue.offer("1");//插入一個元素   
  15.         queue.offer("2");  
  16.         queue.offer("3");  
  17.         //打印元素個數   
  18.         System.out.println("queue.size()"+queue.size());  
  19.         //遍歷打印所有的元素,安裝插入是順序打印   
  20.         for (String string : queue)  
  21.         {  
  22.             System.out.println(string);  
  23.         }  
  24.     }  
  25. }  
  26.   
  27. 打印內容:  
  28.   
  29. queue.size()3  
  30. 1  
  31. 2  
  32. 3  

 

下面是API中對隊列的說明:

 

public interface Queue<E>
extends Collection<E>

在處理元素前用於保存元素的 collection。除了基本的 Collection 操作外,隊列還提供其他的插入、提取和檢查操作。每個方法都存在兩種形式:一種拋出異常(操作失敗時),另一種返回一個特殊值(nullfalse,具體取決於操作)。插入操作的後一種形式是用於專門爲有容量限制的 Queue 實現設計的;在大多數實現中,插入操作不會失敗。

  拋出異常 返回特殊值
插入 add(e) offer(e)
移除 remove() poll()
檢查 element() peek()

隊列通常(但並非一定)以 FIFO(先進先出)的方式排序各個元素。不過優先級隊列和 LIFO 隊列(或堆棧)例外,前者根據提供的比較器或元素的自然順序對元素進行排序,後者按 LIFO(後進先出)的方式對元素進行排序。無論使用哪種排序方式,隊列的 都是調用 remove()poll() 所移除的元素。在 FIFO 隊列中,所有的新元素都插入隊列的末尾。其他種類的隊列可能使用不同的元素放置規則。每個 Queue 實現必須指定其順序屬性。

如果可能,offer 方法可插入一個元素,否則返回 false。這與 Collection.add 方法不同,該方法只能通過拋出未經檢查的異常使添加元素失敗。offer 方法設計用於正常的失敗情況,而不是出現異常的情況,例如在容量固定(有界)的隊列中。

remove()poll() 方法可移除和返回隊列的頭。到底從隊列中移除哪個元素是隊列排序策略的功能,而該策略在各種實現中是不同的。remove()poll() 方法僅在隊列爲空時其行爲有所不同:remove() 方法拋出一個異常,而 poll() 方法則返回 null

element()peek() 返回,但不移除,隊列的頭。

Queue 接口並未定義阻塞隊列的方法,而這在併發編程中是很常見的。BlockingQueue 接口定義了那些等待元素出現或等待隊列中有可用空間的方法,這些方法擴展了此接口。

Queue 實現通常不允許插入 null 元素,儘管某些實現(如 LinkedList)並不禁止插入 null。即使在允許 null 的實現中,也不應該將 null 插入到 Queue 中,因爲 null 也用作 poll 方法的一個特殊返回值,表明隊列不包含元素。

Queue 實現通常未定義 equalshashCode 方法的基於元素的版本,而是從 Object 類繼承了基於身份的版本,因爲對於具有相同元素但有不同排序屬性的隊列而言,基於元素的相等性並非總是定義良好的。

轉自:http://blog.csdn.net/javaalpha/article/details/5387017

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章