剛纔看見羣裏的一個朋友在問隊列的使用,確實在現實的寫代碼中很少使用隊列的,反正我是從來沒使用過。只是學數據結構的時候學過。
下面是我寫的一個小例子,希望有不足之處請提出改正。O(∩_∩)O~
看代碼:
- import java.util.LinkedList;
- import java.util.Queue;
- public class TestQueue
- {
- /**
- * @param args
- * @author JavaAlpha
- * Info 測試隊列
- */
- public static void main(String[] args)
- {
- Queue<String> queue = new LinkedList<String>();
- queue.offer("1");//插入一個元素
- queue.offer("2");
- queue.offer("3");
- //打印元素個數
- System.out.println("queue.size()"+queue.size());
- //遍歷打印所有的元素,安裝插入是順序打印
- for (String string : queue)
- {
- System.out.println(string);
- }
- }
- }
- 打印內容:
- queue.size()3
- 1
- 2
- 3
下面是API中對隊列的說明:
public interface Queue<E>extends Collection<E>
在處理元素前用於保存元素的 collection。除了基本的
Collection
操作外,隊列還提供其他的插入、提取和檢查操作。每個方法都存在兩種形式:一種拋出異常(操作失敗時),另一種返回一個特殊值(null 或
false,具體取決於操作)。插入操作的後一種形式是用於專門爲有容量限制的 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 實現通常未定義 equals 和 hashCode 方法的基於元素的版本,而是從 Object 類繼承了基於身份的版本,因爲對於具有相同元素但有不同排序屬性的隊列而言,基於元素的相等性並非總是定義良好的。
轉自:http://blog.csdn.net/javaalpha/article/details/5387017