我正在尝试模拟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;

10-08 17:34