Java Queue隊列


前言

   Queue隊列是一種特殊的線性表,它只允許在表的前端進行刪除操作,而在表的后端進行插入操作,LinkedList類實現了Queue接口,因此我們可以把LinkedList當成Queue來用.  而LinkedList我們將在其他博客中說明.Queue接口與List、Set同一級別,都是繼承了Collection接口。LinkedList實現了Deque接口.所以基本上,一個隊列就是一個先入先出(FIFO)的數據結構

  另外你需要注意:

  1.Queue 是最簡單的隊列

  2.Queue未實現阻塞功能,並發的添加會導致一些元素添加失敗.

 

一個簡單的Demo

private void demo(){
        Queue<String> stringQueue = new LinkedList<>();
        stringQueue.offer("A1"); //offer實現添加元素,但是如果Queue已經滿了,會返回布爾值false
        stringQueue.offer("A2");
        stringQueue.offer("A3");
        stringQueue.offer("A4");

        String content = stringQueue.poll();//poll()方法提取第一個元素並且刪除它
        System.out.println("被提取的元素="+content);
        for (String item : stringQueue){
            System.out.println("剩余元素="+item);

        }
    }

上面代碼的運行結果:

被提取的元素=A1
剩余元素=A2
剩余元素=A3
剩余元素=A4

Api的一些介紹與區別  

Queue的隊列十分簡單,一共就提供了6個API remove、element、offer、add、poll、peek 進行數據添加與獲取操作屬於Queue接口,但是他們都是有區別的, 因為他們會接口到其他種類的隊列中.所以有必要了解一下線區別:

offer,add 區別:

一些隊列有大小限制,因此如果想在一個滿的隊列中加入一個新項,多出的項就會被拒絕。

這時新的 offer 方法就可以起作用了。它不是對調用 add() 方法拋出一個 unchecked 異常,而只是得到由 offer() 返回的 false。

poll,remove 區別:

remove() 和 poll() 方法都是從隊列中刪除第一個元素。remove() 的行為與 Collection 接口的版本相似, 但是新的 poll() 方法在用空集合調用時不是拋出異常,只是返回 null。因此新的方法更適合容易出現異常條件的情況。

peek,element區別:

element() 和 peek() 用於在隊列的頭部查詢元素。與 remove() 方法類似,在隊列為空時, element() 拋出一個異常,而 peek() 返回 null。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM