我已经为优先队列创建了一个比较器。
class CompareBySalary implements Comparator<Employee>{
@Override
public int compare(Employee e1,Employee e2){
return e1.salary<e2.salary ? -1 : e1.salary>e2.salary ? 1 : 0;
}
}
class Employee{
String name;
float salary;
Employee(String name,float salary){
this.name=name;
this.salary=salary;
}
}
public class TryCode{
public static void main(String args[])
{
Employee e1=new Employee("C",10000);
Employee e2=new Employee("A",5000.45f);
Employee e3=new Employee("D",15000);
Employee e4=new Employee("B",5000.67f);
Queue<Employee> q=new PriorityQueue(new CompareBySalary());
q.offer(e1);
q.offer(e2);
q.offer(e3);
q.offer(e4);
for(Employee e:q)
System.out.println(e.name);
}
}
这给出了输出:ABDC 为什么没有正确排序?这是我想念的东西吗?PS 我已经尝试过使用 Float.compare() 它提供相同的输出。