PriorityQueue

定義優(yōu)先級隊列,實現(xiàn)了AbstractQueue

優(yōu)先隊列跟普通的隊列不一樣,普通隊列是一種遵循FIFO規(guī)則的隊列,拿數(shù)據(jù)的時候按照加入隊列的順序拿取。 而優(yōu)先隊列無論插入的順序如何每次拿數(shù)據(jù)的時候都會拿出優(yōu)先級最高(優(yōu)先級value最?。┑臄?shù)據(jù)。

Priority原理分析

優(yōu)先隊列內部維護著一個堆,每次取數(shù)據(jù)的時候都從堆頂拿數(shù)據(jù),這就是優(yōu)先隊列的原理。

每次add的時候都會siftUp(i, e);從下往上調整,因為新增元素是加到最后一個葉子節(jié)點

每次poll的時候都會siftDown(0, x); 從上往下調整,因為刪除元素是刪除堆頂?shù)脑?/p>

例子:

Comparatortest = new Comparator() {?

?@Override?

?public int compare(Integer t1, Integer t2) { return t1 - t2;} };?

?PriorityQueue test2 = new PriorityQueue(6, test);

? ? test2.add(6);

? ? test2.add(10);

? ? test2.add(2);

? ? test2.add(3);

? ? test2.add(4);

? ? test2.add(5);

? ? System.out.println(test2.toString());

? ? System.out.println(test2.remove());

輸出:

[10, 6, 5, 3, 4, 2]

2

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容