古詩詞大全網 - 成語經典 - java中的queue類是什麽,啥作用?

java中的queue類是什麽,啥作用?

java中的queue類是隊列數據結構管理類。在它裏邊的元素可以按照添加它們的相同順序被移除。

隊列通常(但並非壹定)以 FIFO(先進先出)的方式排序各個元素。不過優先級隊列和 LIFO 隊列(或堆棧)例外,前者根據提供的比較器或元素的自然順序對元素進行排序,後者按 LIFO(後進先出)的方式對元素進行排序。無論使用哪種排序方式,隊列的頭都是調用remove()或poll()所移除的元素。在 FIFO 隊列中,所有的新元素都插入隊列的末尾。其他種類的隊列可能使用不同的元素放置規則。每個Queue實現必須指定其順序屬性。

offer 添加壹個元素並返回true 如果隊列已滿,則返回false

poll 移除並返問隊列頭部的元素 如果隊列為空,則返回null

peek 返回隊列頭部的元素 如果隊列為空,則返回null

put 添加壹個元素 如果隊列滿,則阻塞

take 移除並返回隊列頭部的元素 如果隊列為空,則阻塞

element 返回隊列頭部的元素 如果隊列為空,則拋出壹個NoSuchElementException異常

add 增加壹個元索 如果隊列已滿,則拋出壹個IIIegaISlabEepeplian異常

remove 移除並返回隊列頭部的元素 如果隊列為空,則拋出壹個

NoSuchElementException異常

註意:poll和peek方法出錯進返回null。因此,向隊列中插入null值是不合法的。

還有帶超時的offer和poll方法重載,例如,下面的調用:

boolean success = q.offer(x,100,TimeUnit.MILLISECONDS);

嘗試在100毫秒內向隊列尾部插入壹個元素。如果成功,立即返回true;否則,當到達超時進,返回false。同樣地,調用:

Object head = q.poll(100, TimeUnit.MILLISECONDS);

如果在100毫秒內成功地移除了隊列頭元素,則立即返回頭元素;否則在到達超時時,返回null。

阻塞操作有put和take。put方法在隊列滿時阻塞,take方法在隊列空時阻塞。

Queue接口與List、Set同壹級別,都是繼承了Collection接口。LinkedList實現了Queue接 口。Queue接口窄化了對LinkedList的方法的訪問權限(即在方法中的參數類型如果是Queue時,就完全只能訪問Queue接口所定義的方法 了,而不能直接訪問 LinkedList的非Queue的方法),以使得只有恰當的方法才可以使用。BlockingQueue 繼承了Queue接口。