Im Versuch, die Überschreibung Komparator Methode der Priorityqueue und i verwenden möchten folgendes erreichen:Komparator von Priorityqueue in Java
i die aktuelle Liste haben:
RG3
PR1
PR2
RG4
RG1
RG2
die RG bezieht sich auf eine regelmäßige Person und die PR bezieht sich auf eine Person mit Priorität, die Zahlen stellen die Wendungen dar. was ich will, ist eine First-in-first-out-Reihenfolge zu erhalten, außer wenn es eine Priorität Person ist, die an die Spitze der Warteschlange in seinem Zug gehen wird. so in der Liste möchte ich folgendes Ergebnis
PR1
PR2
RG1
RG2
RG3
RG4
heres was ive bisher getan:
Queue<Ficha> cola = new PriorityQueue<>(6, idComparator);
while (!list.isEmpty()) //this list is the unsorted list.
{
aux = list.remove(0);
cola.add(aux); // adds it to the priority queue
}
while(!cola.isEmpty())
{
aux = cola.poll();
System.out.println(aux.getCod_priority()+aux.getTurn()); // this shows me the order of the queue
}
}
public static Comparator<Ficha> idComparator = new Comparator<Ficha>()
{
@Override
public int compare(Ficha f1, Ficha f2) {
return (int) ((f1.getTurn()+prioridad(f1.getCod_priority())) - (f2.getTurn()+prioridad(f2.getCod_priority())));
}
};
private static long prioridad(String cod_priority) // this method i use it to give the cod_priority a int value to compare
{
if(cod_tipo_ficha=="PR")
{
return 10000;
}
else
{
return 1;
}
}
und wenn ich es laufen bekomme ich die folgende Reihenfolge:
PR1
RG1
RG2
PR2
RG3
RG4
ich weiß, mein Problem ist in der Vergleichsmethode, aber ich weiß nicht, wie man die Warteschlange erreicht, die ich will.
Ich weiß, es gibt viele Fragen im Zusammenhang mit dem Vergleich, aber die einzigen Antworten, die ich sehe, ist, wenn Sie Zeichenfolgen vergleichen. und diese muss ich die Prioritätszeichenfolge und das int vergleichen.
@amique dass häufiger Fehler ist. Ich mache 5 solche Bugs pro Tag. – alexey28