Può sembrare sciocco, ma ha senso quando si ha oggetto di coppia (chiave, valore) e li si ordina in base ai tasti. Per illustrare il mio punto con il codice:In che modo PriorityQueue in Java ordina le voci duplicate?
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?
}
}
Quale sarebbe in pair
? Il primo o l'ultimo elemento aggiunto? O qualcuno di loro senza possibilità di decidere?
+1 per l'unica risposta corretta. –
Quindi, se ho capito bene, semplicemente non posso fare affidamento su quale sarà il valore che ottengo per primo? Perché dall'output sembra davvero che sia il comportamento "FIFO". – Petr
Secondo API non è possibile, ma i miei test mostrano anche un comportamento simile a FIFO per lo stesso Pair.key. –