编辑:我添加了我创建类Process的新实例作为p。 编辑2:从编译中添加了错误。
为模拟进程调度的类编写程序,我试图使用最初在指定的提交时间之前存储所有进程的优先级队列。我想按进程优先级在notSubmitted优先级队列中对它们进行优先级排序。我想我需要使用比较器,但我不确定,因为我之前从未使用优先级队列编程。这就是我在下面尝试做的事情。任何人都可以帮我解决什么错误以及我需要做些什么来解决它?
我有一个流程类没有在下面显示,如果你希望我在我可以添加它。
创建Process类的新实例。
static PriorityQueue<Process> notSubmitted = new PriorityQueue<Process>(25,
new Comparator<Process>(){
public int compare(Object t1, Object t2)
{
int process1Time = ((Process)t1).getsubmissionTime();
int process2Time = ((Process)t2).getsubmissionTime();
if(process1Time > process2Time)
{
return 1;
}
else if(process1Time < process2Time)
{
return -1;
}
else
{
return 0;
}
}
} );
Process[] p = new Process[25];
这是我填充队列的地方。 (最初我有一个常规队列,一切正常,但我想更改为优先级队列,以便稍后在程序中更容易)
for(int j = 0; j < numProcesses; ++j)
{
pid = i.nextInt();
priority = i.nextInt();
submissionTime = i.nextInt();
totalCpuTime = i.nextInt();
computeTime = i.nextInt();
ioTime = i.nextInt();
p[j] = new Process(pid, priority, submissionTime, totalCpuTime, computeTime, ioTime);
}
System.out.printf("%d %d %d\n",c.getcpuNum(), c.getnumProcesses(), c.getqSize());
for(int r = 0; r < numProcesses; ++r)
{
//populate the not submitted queue first
notSubmitted.add(p[r]);
}
编译错误
javac prog2.java
prog2.java:84: <anonymous prog2$1> is not abstract and does not override abstract method compare(Process,Process) in java.util.Comparator
public int compare(Object t1, Object t2)
^
1 error
答案 0 :(得分:1)
您的compare
方法需要两个Process
个参数,而不是两个Object
个。
...
public int compare(Process p1, Process p2) {
...