自定义比较器不排序

时间:2013-10-25 17:33:58

标签: java sorting arraylist comparator

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

1 个答案:

答案 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;