我刚刚学习了优先级队列,并认为我会尝试在可比较的接口下如何工作。

代码段:

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);
}

07-27 23:16