有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

集合如何在Java中定义基于两个变量进行比较的比较器

我想创建一个比较器,这样一来,到达时间较短的进程将首先出现在排序中,如果两个进程的到达时间相同,则具有较低进程id的进程将首先出现在排序中。我尝试了以下代码,但似乎不起作用。有人看到它有缺陷吗

public class FCFSComparator implements Comparator<Process>
{
    public int compare(Process o1, Process o2)
    {
        int result = o1.getArrivalTime() - o2.getArrivalTime();

        if(result == 0)
        {
            return (o1.getPid() < o2.getPid()) ? -1 : 1;
        }
        else
        {
            return result;
        }
//        return (result != 0 ? result : o1.getPid() - o2.getPid());
    }
}

具体来说,考虑到以下过程

pid = 0 arrival time = 10
pid = 1 arrival time = 30
pid = 2 arrival time = 15
pid = 3 arrival time = 15
pid = 4 arrival time = 66

最后我得到了以下订单

Pid = 0 arrival time = 10
Pid = 2 arrival time = 15
Pid = 1 arrival time = 30
Pid = 4 arrival time = 66
Pid = 3 arrival time = 15

共 (0) 个答案