Queue 隊列的用法


隊列是一種特殊的線性表,它只允許在表的前端進行刪除操作,而在表的后端進行插入操作。
LinkedList類實現了Queue接口,因此我們可以把LinkedList當成Queue來用。

以下實例演示了隊列(Queue)的用法:
import java.util.LinkedList; import java.util.Queue; public class Main { public static void main(String[] args) { //add()和remove()方法在失敗的時候會拋出異常(不推薦) 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("==="); System.out.println("poll="+queue.poll()); //返回第一個元素,並在隊列中刪除 for(String q : queue){ System.out.println(q); } System.out.println("==="); System.out.println("element="+queue.element()); //返回第一個元素 for(String q : queue){ System.out.println(q); } System.out.println("==="); System.out.println("peek="+queue.peek()); //返回第一個元素 for(String q : queue){ System.out.println(q); } } } 以上代碼運行輸出結果為: a b c d e === poll=a b c d e === element=b b c d e === peek=b b c d e

 

 

 

 Queue  概念

隊列是一種數據結構.它有兩個基本操作:在隊列尾部加人一個元素,和從隊列頭部移除一個元素就是說,隊列以一種先進先出的方式管理數據,如果你試圖向一個 已經滿了的阻塞隊列中添加一個元素或者是從一個空的阻塞隊列中移除一個元索,將導致線程阻塞.在多線程進行合作時,阻塞隊列是很有用的工具。工作者線程可 以定期地把中間結果存到阻塞隊列中而其他工作者線線程把中間結果取出並在將來修改它們。隊列會自動平衡負載。如果第一個線程集運行得比第二個慢,則第二個 線程集在等待結果時就會阻塞。如果第一個線程集運行得快,那么它將等待第二個線程集趕上來。下表顯示了jdk1.5中的阻塞隊列的操作:

 

add        增加一個元索                     如果隊列已滿,則拋出一個IIIegaISlabEepeplian異常
remove   移除並返回隊列頭部的元素    如果隊列為空,則拋出一個NoSuchElementException異常
element  返回隊列頭部的元素             如果隊列為空,則拋出一個NoSuchElementException異常
offer       添加一個元素並返回true       如果隊列已滿,則返回false
poll         移除並返問隊列頭部的元素    如果隊列為空,則返回null
peek       返回隊列頭部的元素             如果隊列為空,則返回null
put         添加一個元素                      如果隊列滿,則阻塞
take        移除並返回隊列頭部的元素     如果隊列為空,則阻塞

 

remove、element、offer 、poll、peek 其實是屬於Queue接口。 

 

 


免責聲明!

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



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