2012-04-11 100 views
0

看起來像PriorityQueue是一個LIFO結構(如果它的所有元素具有相同的優先級),我說得對嗎?PriorityQueue民意調查

public E poll() { 
    if (size == 0) 
     return null; 
    modCount++; 

    E result = (E) queue[1]; 
    queue[1] = queue[size]; 
    queue[size--] = null; // Drop extra ref to prevent memory leak 
    if (size > 1) 
     fixDown(1); 

    return result; 
} 
+0

你的問題是什麼? – st0le 2012-04-11 10:01:14

回答

0

從文檔:基於優先級堆

的極大優先級隊列。優先級隊列的元素根據其自然順序排序,或者由隊列構建時提供的比較器進行排序,具體取決於使用哪個構造函數。優先級隊列不允許空元素。依賴於自然順序的優先級隊列也不允許插入非可比對象(這樣做可能導致ClassCastException)。

該隊列的頭部是相對於指定排序的最小元素。如果多個元素的價值最小,那麼頭是其中一個元素 - 領帶被任意破壞。隊列檢索操作輪詢,刪除,查看和元素訪問隊列頭部的元素。

http://docs.oracle.com/javase/6/docs/api/java/util/PriorityQueue.html

基本上,總有一個「優先」,默認情況下,它的元素的自然順序。

+0

如何解釋這一行 – 2012-04-11 10:06:09

+0

如何解釋queue [1] = queue [size]?這將把最後一個元素帶到頭頂位置。 – 2012-04-11 10:07:36

+0

如果您更新問題以提出具體問題,則更容易。 – pcalcao 2012-04-11 10:11:12

1

在Javadoc中,'關係被任意破壞'的陳述意味着你的問題的答案是'不'。