2013-10-25 92 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; 
相关问题