理解數據結構Priority Queue
阿新 • • 發佈:2018-05-25
tde dql MQ 需要 bmc 即使 hcm poll() oid
我們知道Queue是遵循先進先出(First-In-First-Out)模式的,但有些時候需要在Queue中基於優先級處理對象。舉個例子,比方說我們有一個每日交易時段生成股票報告的應用程序,需要處理大量數據並且花費很多處理時間。客戶向這個應用程序發送請求時,實際上就進入了隊列。我們需要首先處理優先客戶再處理普通用戶。在這種情況下,Java的PriorityQueue會很有幫助。
PriorityQueue能高效地插入元素,高效地刪除最小元素。
刪除是基於默認的自然順序排列(也就是數字小的在隊列頭)或者按Comparator規定的順序排列。
比如說,Sue有一些輕微的小傷口最先來到了醫院的急診室
雖然Sue是先來的,但是,Joe被蛇咬傷更加需要先治療,於是Joe被排在了Sue的前面
這時候Queue就基於優先級處理對象了,即PriorityQueue。
1 public static void main(String[] args) { 2 3 PriorityQueue<String> pQueue = new PriorityQueue<>(); 4 5 pQueue.add("B"); 6 7 pQueue.offer("C"); 8 9 pQueue.add("F");10 11 pQueue.offer("A"); 12 13 pQueue.add("L"); 14 15 pQueue.add("D"); 16 17 pQueue.add("E"); 18 19 pQueue.add("J"); 20 21 System.out.println("Head:" + pQueue.peek()); 22 23 while (!pQueue.isEmpty()) { 24 25 System.out.print(pQueue.poll() + " ");26 27 } 28 29 }
輸出:
Head: A
A B C D E F J L
從以上代碼可以看出,即使add到PriorityQueue的順序是亂序,但PriorityQueue會以默認的從小到大順序被poll()出來
理解數據結構Priority Queue