1. 程式人生 > >理解數據結構Priority Queue

理解數據結構Priority Queue

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