我刚学习了优先队列并尝试使用可比较的接口测试它的行为。
代码片段:
import java.util.PriorityQueue;
class kinga implements Comparable<Double> {
double time=909.909;
double d;
public kinga(double a) {
this.d=a;
}
public int compareTo(Double d) {
return Double.compare(d, time);
}
public static void main(String arg[]) {
PriorityQueue<kinga> r=new PriorityQueue<kinga>();
r.add( new kinga(4545.45));
r.add( new kinga(45.4));
r.add( new kinga(1235.45));
System.out.println(r.poll()+" "+r.poll()+" "+r.poll());
}
}
代码可以编译,但在主线程中抛出异常:java.lang.ClassCastException: kinga 无法转换为 java.lang.Double
。
这里出了什么问题?有人能告诉我可比较性和优先队列是如何工作的吗?