Queue 隊列

理解:

隊列是一種特殊的線性表,它只允許在表的前端(front)進行刪除操作,而在表的后端(rear)進行插入操作。進行插入操作的端稱為隊尾,進行刪除操作的端稱為隊頭。隊列中沒有元素時,稱為空隊列。
Queue接口與List、Set同一級別,都是繼承了Collection接口。LinkedList實現了Deque接 口。

假設下面是一個隊列:
隊尾 ---->[1,2,3,4,5]---> 隊頭
數據從隊尾進,從隊頭出。即先進先出原則。

java5 中新增加了java.util.Queue接口,用以支持隊列的常見操作。該接口擴展了java.util.Collection接口。

注意:

1.Queue使用時要盡量避免Collection的add()和remove()方法,而是要使用offer()來加入元素,使用poll()來獲取并移出元素。它們的優點是通過返回值可以判斷成功與否,add()和remove()方法在失敗的時候會拋出異常。
2.如果要使用前端而不移出該元素,使用element()或者peek()方法。

值得注意的是LinkedList類實現了Queue接口,因此我們可以把LinkedList當成Queue來用。

應用場景:

多線程中應用

基本用法

使用起來跟list這些集合沒有什么區別

public class QueueTest {
       public static void main(String[] args) {
               Queue<String> queue = new LinkedList<String>();
               queue.offer("a");        //添加元素
               queue.offer("b");
               queue.offer("c");
               queue.offer("d");
               queue.offer("e");
               for (String q : queue) {
                       System.out.println(q);
               }
               System.out.println("poll=" + queue.poll());        //移除第一個元素

               for (String q : queue) {
                       System.out.println(q);
               }

               System.out.println("peek=" + queue.peek()); // 返回第一個元素
               for (String q : queue) {
                       System.out.println(q);
               }
       }
}
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 一、隊列的定義 隊列也是數據結構的其中一種,和棧相反的是。隊列是只允許在一端進行插入,在另一端進行刪除的線性表。 ...
    bryanrady_wang閱讀 6,203評論 0 0
  • 4 Queue隊列 前面幾篇,我們介紹了Java集合中常用到的對象。本篇中,我們再來說說Queue隊列的故事。 對...
    賈博巖閱讀 3,079評論 0 3
  • C++隊列queue模板類的定義在頭文件中,queue 模板類需要兩個模板參數,一個是元素類型,一個容器類型,元素...
    杰倫哎呦哎呦閱讀 1,849評論 0 0
  • 今天兒子和兩個小伙伴到田園里玩,挖了好多薺菜,回來問我,可以包薺菜混沌嗎?我說可以呀,他們三個小子就各自分工買肉,...
    劉美銀閱讀 165評論 0 0
  • 一、普遍困擾大家的問題 1.房價太貴,買不起。買一二線城市的房子,首付至少要大幾十萬。2.通貨膨脹太快,存款貶值。...
    陶維英閱讀 21,671評論 22 97