java中优先级队列的比较器
我正在尝试使用priorityqueue的override comparator方法,我希望实现以下目标: 我有目前的清单:java中优先级队列的比较器,java,comparator,priority-queue,Java,Comparator,Priority Queue,我正在尝试使用priorityqueue的override comparator方法,我希望实现以下目标: 我有目前的清单: RG3 PR1 PR2 RG4 RG1 RG2 RG指的是普通人,PR指的是有优先权的人,数字代表轮次。 我想要的是得到一个先进先出的顺序,除非是一个优先的人,他会依次排在队列的最前面。所以在列表中,我想要以下结果 PR1 PR2 RG1 RG2 RG3 RG4 以下是我迄今为止所做的: Queue<Ficha> cola = new
RG3
PR1
PR2
RG4
RG1
RG2
RG指的是普通人,PR指的是有优先权的人,数字代表轮次。
我想要的是得到一个先进先出的顺序,除非是一个优先的人,他会依次排在队列的最前面。所以在列表中,我想要以下结果
PR1
PR2
RG1
RG2
RG3
RG4
以下是我迄今为止所做的:
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;
}
}
我知道我的问题在于比较器方法,但我不知道如何实现我想要的队列
我知道有很多关于如何比较的问题,但我看到的唯一答案是当你比较字符串时。这个我需要比较优先级字符串和整数。只要把cod\u tipo\u ficha==“PR”改为
应该有效的,只要把cod_tipo_ficha==“PR”改为
应该行得通@amique这是常见的错误。我每天要做5个这样的错误。@amique这是常见的错误。我每天做5个这样的虫子。
PR1
RG1
RG2
PR2
RG3
RG4
if("PR".equals(cod_tipo_ficha)) {
...
}