Może to zabrzmieć głupio, ale ma sens, gdy masz obiekt pary (klucza, wartości) i sortujesz je według kluczy. Aby zilustrować mój punkt z kodem:Jak PriorityQueue w Java sortuje duplikaty wpisów?
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?
}
}
Co będzie w pair
? Pierwszy lub ostatni dodany element? A może któryś z nich bez możliwości decydowania?
+1 za jedyną poprawną odpowiedź. –
Więc jeśli rozumiem to poprawnie - po prostu nie mogę polegać na tym, jaka będzie wartość, którą otrzymam jako pierwszą? Ponieważ z wyniku naprawdę wygląda na zachowanie "FIFO". – Petr
Zgodnie z API nie można, ale moje testy pokazują również zachowanie podobne do FIFO dla tego samego Pair.key. –