Java 8 Comparator chaining with a reverse on single property

Logan Wlv :

I am using a Comparator to sort a list of Student objects.

I want to reverse the sorting on the id property, but using reverse() method applies it on the whole sorting.

How to make it happens only on the id?

Here's my code so far:

 public List<Student> getStudents(List<String> events) {
    Comparator<Student> comparatorStudents = Comparator.comparing(Student::getCGPA).thenComparing(Student::getName)
      .thenComparingInt(Student::getID).reverse();
    List<Student> students = new ArrayList<Student>();
    //Filling students
    Collections.sort(students, comparatorStudents);
    return students;
  }
shmosel :

Change the last bit to:

.thenComparing(Student::getID, Comparator.reverseOrder())

Or, if you want to avoid autoboxing:

.thenComparing(Comparator.comparingInt(Student::getID).reversed())

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=36667&siteId=1