这些是我在此任命的指示:
使用PriorityQueue类对对象进行排序来创建应用程序。应用程序需要首先按自然顺序对对象进行排序(即通过实现可比较),然后通过自定义的比较器对象进行排序。您必须创建用户定义的数据类型。
我一直收到这个错误并且非常坚持。
Cannot assign value of type 'Results<Car>?' to type 'Results<Object>?'
这是我的所有代码,不包括带有set和get方法的普通Exponents类。
Exception in thread "main" java.lang.ClassCastException: Exponents cannot be cast to java.lang.Comparable
at java.util.PriorityQueue.siftUpComparable(PriorityQueue.java:652)
at java.util.PriorityQueue.siftUp(PriorityQueue.java:647)
at java.util.PriorityQueue.offer(PriorityQueue.java:344)
at java.util.PriorityQueue.add(PriorityQueue.java:321)
at ExponentsDemo.main(ExponentsDemo.java:34)
----jGRASP wedge2: exit code for process is 1.
----jGRASP: operation complete.
:
import java.util.PriorityQueue;
//import java.util.Comparable;
public class ExponentsDemo
{
public static void main(String []args)
{
Exponents e1 = new Exponents(2,3);
Exponents e2 = new Exponents(5,2);
Exponents e3 = new Exponents(4,3);
Exponents e4 = new Exponents(6,5);
PriorityQueue<Exponents> pQueue = new PriorityQueue<Exponents>();
pQueue.add(e1);
pQueue.add(e2);
pQueue.add(e3);
pQueue.add(e4);
while (!pQueue.isEmpty()) {
System.out.println(pQueue.poll());
}
}
}
答案 0 :(得分:0)
使用ComparableExponents作为优先级队列的类型,并创建ComparableExponents的对象以插入PriorityQueue。
public static void main(String[] args) {
ComparableExponents e1 = new ComparableExponents(2, 3);
ComparableExponents e2 = new ComparableExponents(5, 2);
ComparableExponents e3 = new ComparableExponents(4, 3);
ComparableExponents e4 = new ComparableExponents(6, 5);
PriorityQueue<ComparableExponents> pQueue = new PriorityQueue<ComparableExponents>();
pQueue.add(e1);
pQueue.add(e2);
pQueue.add(e3);
pQueue.add(e4);
while (!pQueue.isEmpty()) {
System.out.println(pQueue.poll());
}
}