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接口。 

 

相關文章
相關標籤/搜索