編輯:我在我創建類的過程中的新實例添加爲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
爲什麼你認爲你的程序不工作?請添加發生錯誤的描述,最好使用堆棧跟蹤。 – Perception 2012-03-21 13:24:23
那麼,哪裏出了問題?它是以錯誤的順序出來的嗎?不編譯? – Thomas 2012-03-21 13:24:47
對不起。我在編譯器中添加了錯誤。 – Trance339 2012-03-21 13:28:08