Es klingt vielleicht albern, aber es macht Sinn, wenn Sie Objekt (Schlüssel, Wert) paar haben und Sie sie nach den Schlüsseln sortieren. Zu meinen Punkt mit Code veranschaulichen:Wie PriorityQueue in Java doppelte Einträge sortiert?
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?
}
}
Was in pair
sein würde? Das erste oder letzte hinzugefügte Element? Oder irgendwelche von ihnen ohne Möglichkeit zu entscheiden?
+1 für die einzig richtige Antwort. –
Also, wenn ich es richtig verstehe - ich kann mich einfach nicht darauf verlassen, was der Wert sein wird, den ich zuerst bekomme? Weil es aus der Ausgabe wirklich aussieht wie "FIFO" Verhalten. – Petr
Nach API können Sie nicht, aber meine Tests zeigen auch FIFO-ähnliches Verhalten für den gleichen Pair.key. –