2013-10-25 132 views
0

我試圖模擬CPU調度程序。我有一個我做的ArrayList。我試圖根據進程的到達時間對這個數組列表進行排序。我一定錯過了一些東西,因爲當我打印我的ArrayList時,沒有任何反應。自定義比較器不排序

我一直在尋找其他用戶的帖子,但我還沒有找到任何有意義的東西給我。

這是我Comparator和來電sort

class ArrivalTimeComparator implements Comparator<Process> { 
    @Override 
     public int compare(Process p1, Process p2) { 
     return (int) (p1.getArrivalTime()-p2.getArrivalTime()); 
    } 
} 

Collections.sort(processArray, new ArrivalTimeComparator()); 
+1

什麼是getArribalTime()的返回類型? – kosa

回答

4

此代碼

(int)(p1.getArrivalTime()-p2.getArrivalTime()) 

可以從整數運算溢出受苦,所以你可以得到奇怪的結果。如果您使用的是Java 7,使用

Integer.compare(p1.getArrivalTime(), p2.getArrivalTime()); //or Long.compare 

如果你正在使用Java 6或減少工作時間:

return p1.getArrivalTime() > p2.getArrivalTime() ? 1 : p1.getArrivalTime() < p2.getArrivalTime() ? -1 : 0; 
相關問題