我正在尝试模拟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());
最佳答案
此代码
(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;