我正在尝试模拟CPU调度程序。我有一个ArrayList
Process
课程。我正在尝试按进程的到达时间对此数组列表进行排序。我必须遗漏一些东西,因为当我打印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());
答案 0 :(得分: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;