gpt4 book ai didi

java - 尝试使用优先级队列并且不了解比较器

转载 作者:行者123 更新时间:2023-12-01 15:28:57 25 4
gpt4 key购买 nike

编辑:我在创建 Process 类的新实例的位置添加了 p。编辑2:添加了编译错误。

为模拟进程调度的类编写一个程序,我尝试使用一个优先级队列,该队列最初存储指定提交时间之前的所有进程。我想按进程优先级在未提交优先级队列中对它们进行优先级排序。我认为我需要使用比较器,但我不确定,因为我以前从未使用优先级队列进行编程。这就是我在下面尝试做的事情。谁能帮助我解决问题以及我需要做什么来解决它?

我有一个流程类未在下面显示,如果您希望我将其添加到其中,我可以。

创建 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

最佳答案

您的 compare 方法需要采用两个 Process 参数,而不是两个 Object

...
public int compare(Process p1, Process p2) {
...

关于java - 尝试使用优先级队列并且不了解比较器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9805432/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com