2012-03-21 100 views
0

編輯:我在我創建類的過程中的新實例添加爲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

爲什麼你認爲你的程序不工作?請添加發生錯誤的描述,最好使用堆棧跟蹤。 – Perception 2012-03-21 13:24:23

+0

那麼,哪裏出了問題?它是以錯誤的順序出來的嗎?不編譯? – Thomas 2012-03-21 13:24:47

+0

對不起。我在編譯器中添加了錯誤。 – Trance339 2012-03-21 13:28:08

回答

1

compare方法需要採取兩個Process的參數,而不是兩個Object s。

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

工作完美!謝謝 – Trance339 2012-03-21 13:33:39