這聽起來可能很愚蠢,但當你有(鍵,值)對的對象並且按照鍵對它們進行排序時它是有意義的。爲了說明我的觀點與代碼:Java中的PriorityQueue如何對重複條目進行排序?
public class Pair implements Comparable<Pair> {
private int value;
private int key;
public Pair(int key, int value) {
this.key = key;
this.value = value;
}
@Override
public int compareTo(Pair o) {
if (this.key > o.key)
return 1;
else if (this.key < o.key)
return -1;
return 0;
}
}
public class program {
public static void main(String[] args) {
PriorityQueue<Pair> queue = new PriorityQueue<Pair>;
queue.add(new Pair(1,1));
queue.add(new Pair(1,2));
queue.add(new Pair(1,3));
Pair pair = queue.poll(); // What would be in pair?
}
}
pair
會是什麼?第一個或最後一個添加的元素?或者他們中的任何一個都沒有可能決定?
+1爲唯一正確的答案。 –
所以,如果我理解正確 - 我根本不能依靠什麼是我首先得到的價值?因爲從輸出看來它確實是「FIFO」行爲。 – Petr
根據API你不能,但我的測試也顯示相同的Pair.key類似於FIFO的行爲。 –