0

我正在尝试模拟 CPU 调度程序。我有ArrayList一个Process班级。我正在尝试按进程的到达时间对这个数组列表进行排序。我一定遗漏了一些东西,因为当我打印 my 时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());
4

1 回答 1

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;
于 2013-10-25T17:35:57.503 回答