Java中的隊列都有哪些,有什麽區別?
阿新 • • 發佈:2018-11-08
而是 隊列 style tor 刪除元素 log tails detail .net
LinkedList : 實現了Deque接口,受限的隊列
PriorityQueue : 優先隊列,本質維護一個有序列表。可自然排序亦可傳遞 comparator構造函數實現自定義排序。
ConcurrentLinkedQueue:基於鏈表 線程安全的隊列。增加刪除O(1) 查找O(n)
ArrayBlockingQueue: 基於數組的有界隊列
LinkedBlockingQueue: 基於鏈表的無界隊列
ProiporityBlockingQueue:基於優先次序的無界隊列
DelayQueue:基於時間優先級的隊列
SynchronousQueue:內部沒有容器的隊列 較特別 --其獨有的線程一一配對通信機制 add 增加一個元索 如果隊列已滿,則拋出一個IIIegaISlabEepeplian異常
remove 移除並返回隊列頭部的元素 如果隊列為空,則拋出一個NoSuchElementException異常
element 返回隊列頭部的元素 如果隊列為空,則拋出一個NoSuchElementException異常
offer 添加一個元素並返回true 如果隊列已滿,則返回false
poll 移除並返問隊列頭部的元素 如果隊列為空,則返回null
peek 返回隊列頭部的元素 如果隊列為空,則返回null
put 添加一個元素 如果隊列滿,則阻塞
take 移除並返回隊列頭部的元素 如果隊列為空,則阻塞
參考鏈接:https://blog.csdn.net/bn493235694/article/details/79600634
Queue: 基本上,一個隊列就是一個先入先出(FIFO)的數據結構
Queue接口與List、Set同一級別,都是繼承了Collection接口。LinkedList實現了Deque接 口。
1、未實現阻塞接口的:LinkedList : 實現了Deque接口,受限的隊列
PriorityQueue : 優先隊列,本質維護一個有序列表。可自然排序亦可傳遞 comparator構造函數實現自定義排序。
ConcurrentLinkedQueue:基於鏈表 線程安全的隊列。增加刪除O(1) 查找O(n)
2、實現阻塞接口的:
實現blockqueue接口的五個阻塞隊列,其特點:線程阻塞時,不是直接添加或者刪除元素,而是等到有空間或者元素時,才進行操作。
LinkedBlockingQueue: 基於鏈表的無界隊列
ProiporityBlockingQueue:基於優先次序的無界隊列
DelayQueue:基於時間優先級的隊列
SynchronousQueue:內部沒有容器的隊列 較特別 --其獨有的線程一一配對通信機制 add 增加一個元索 如果隊列已滿,則拋出一個IIIegaISlabEepeplian異常
remove 移除並返回隊列頭部的元素 如果隊列為空,則拋出一個NoSuchElementException異常
element 返回隊列頭部的元素 如果隊列為空,則拋出一個NoSuchElementException異常
offer 添加一個元素並返回true 如果隊列已滿,則返回false
poll 移除並返問隊列頭部的元素 如果隊列為空,則返回null
peek 返回隊列頭部的元素 如果隊列為空,則返回null
put 添加一個元素 如果隊列滿,則阻塞
take 移除並返回隊列頭部的元素 如果隊列為空,則阻塞
Java中的隊列都有哪些,有什麽區別?