Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>I'm making that assumption that the things you are comparing are <code>int</code>. In the case of both variables being equal, you are still returning 1 from the inner comparison. Something like this should help:</p> <pre><code>public class FCFSComparator implements Comparator&lt;Process&gt; { public int compare(Process o1, Process o2) { int result = o1.getArrivalTime() - o2.getArrivalTime(); if (result == 0) { return o1.getPid() - o2.getPid(); } else { return result; } } } </code></pre> <p>EDIT: I checked the above code and it does output the correct order. I can only assume you have a bug somewhere else in your code.</p> <pre><code>Pid = 0 arrival time = 10 Pid = 2 arrival time = 15 Pid = 3 arrival time = 15 Pid = 1 arrival time = 30 Pid = 4 arrival time = 66 </code></pre> <p>The full test code is:</p> <pre><code>import java.util.Comparator; import java.util.List; import java.util.ArrayList; import java.util.Collections; public class Main { public static void main(String[] args) { List&lt;Process&gt; processes = new ArrayList&lt;Process&gt;(); processes.add(new Process(10, 0)); processes.add(new Process(30, 1)); processes.add(new Process(15, 2)); processes.add(new Process(15, 3)); processes.add(new Process(66, 4)); Collections.sort(processes, new FCFSComparator()); for (Process process : processes) System.out.println("Pid = " + process.getPid() + " arrival time = " + process.getArrivalTime()); } static class FCFSComparator implements Comparator&lt;Process&gt; { public int compare(Process o1, Process o2) { int result = o1.getArrivalTime() - o2.getArrivalTime(); if (result == 0) { return o1.getPid() - o2.getPid(); } else { return result; } } } static class Process { private int arrivalTime; private int pid; Process(int arrivalTime, int pid) { this.arrivalTime = arrivalTime; this.pid = pid; } public int getArrivalTime() { return arrivalTime; } public int getPid() { return pid; } } } </code></pre>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. VO
      singulars
      1. This table or related slice is empty.
    2. VO
      singulars
      1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload