Prioritizing Submissions

  • Motivate the need for overriding the natural ordering of types.

A submission that was made earlier will be graded earlier. This behavior is an example of a first-in-first-out situation. Therefore, a queue will be a natural choice to store submissions.

Imagine we want to prioritize the grading of submissions on AutoGrader. We want to consider the number of prior submissions by a student, in addition, or instead of, the order in which the submission was received. For the sake of this contrived example, assume the fewer prior submissions you've made, the higher the priority of your submission to get AutoGrader processing time.

Based on the number of prior submissions, we can sort (order) the submissions using Collections.sort, but we need to overwrite the natural ordering of Submission objects. In Java, you can do this by providing a Comparator to the Collections.sort. An example is provided in the Main.java in the demo package of the starter code.

List<String> students = getStudents();
List<Submission> submissions = getSubmissions(students);

System.out.print("Submission sorted (priority ordering):");
Collections.sort(submissions, new LessSubmissionHigherPriority());
System.out.println(submissions);

where LessSubmissionHigherPriority is defined as:

private static class LessSubmissionHigherPriority 
  implements Comparator<Submission> {

  @Override
  public int compare(Submission s1, Submission s2) {
    return s1.getNumPriorSubmission() - s2.getNumPriorSubmission();
  }
}