我刚刚学习了优先级队列,并认为我会尝试在可比较的接口下如何工作。
代码段:
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());
}
}
它可以编译,但是在线程“main”
java.lang.ClassCastException: kinga cannot be cast to java.lang.Double
中给了我异常。怎么了有人可以告诉我可比队列和优先级队列如何工作吗?
最佳答案
kinga
应该与kinga
相似,而不是Double
,因此:
class kinga implements Comparable<kinga>
这意味着您的
compareTo
方法必须更改为此:public int compareTo(kinga o) {
return Double.compare(o.d, d);
}