Collections FrameworkJava-Collection-Examples

How to sort a List in Descending order

Posted On
Posted By admin

In this article, I will be demonstrating how you can sort a List in descending order. In order to see how to sort a List, you can refer to this blog post.

 

Approach 1 – Using Collections.reverse

The Collections class has a utility method called reverse.  You can use this to sort a List in descending order. The following code demonstrates this:

private static void usingCollectionsReverse() {
  List<Integer> input = Arrays.asList(15,12,34,11,93,21,64);
  System.out.println("Before sorting:"+input);
  Collections.sort(input);
  Collections.reverse(input);
  System.out.println("After sorting:"+input);
}

Here, the code first invokes the Collection.sort. This sorts the List in ascending order. Then the code invokes the Collections.reverse

method to reverse the List. So this code prints the following output:

Before sorting:[15, 12, 34, 11, 93, 21, 64]
After sorting:[93, 64, 34, 21, 15, 12, 11]

Approach 2 – Using Collections.reverseOrder

There is an overloaded version of the Collections.sortmethod. This accepts a Comparator instance in addition to the Collection that needs to be sort. Also, the Collections class has a static method called Collections.reverseOrder(). This returns a Comparator that imposes the reverse of the natural ordering. So you can use both these methods to sort a List in descending order. The following code demonstrates this:

private static void usingCollectionsReverseOrder() {
  List<Integer> input = Arrays.asList(15,12,34,11,93,21,64);
  System.out.println("Before sorting:"+input);
  Collections.sort(input,Collections.reverseOrder());
  System.out.println("After sorting:"+input);
}

Here, the code invokes the Collections.sort method with the input List and a Comparator that imposes the reverse of the natural ordering. So this code prints the same output as before:

Before sorting:[15, 12, 34, 11, 93, 21, 64]
After sorting:[93, 64, 34, 21, 15, 12, 11]

Approach 3 – Using List.sort

Java 8 has added a sort method to the List interface. You can use this to sort a List. The  List.sort method accepts as parameter a Comparator instance. You can use the Collections.reverseOrder() seen earlier to obtain a Comparator that imposes the reverse of the natural ordering and pass this Comparator to the List.sort method. The following code demonstrates this:

private static void usingListSortComparatorReverseOrder() {
  List<Integer> input = Arrays.asList(15,12,34,11,93,21,64);
  System.out.println("Before sorting:"+input);
  input.sort(Comparator.reverseOrder());
  System.out.println("After sorting:"+input);
}

 

Here, the code invokes the List.sort method. It uses the  Comparator.reverseOrder to obtain a Comparator that imposes the reverse of the natural ordering. So this code prints the same output as before:

Before sorting:[15, 12, 34, 11, 93, 21, 64]
After sorting:[93, 64, 34, 21, 15, 12, 11]


In the above examples, you can also implement the Comparator interface using a lambda expression as follows:

input.sort((num1,num2) -> num2-num1);

This will also produce the same output as before.

Conclusion

So in this article, we saw three different ways in which you can sort a List in descending order. We saw how you can use the Collections.sort method to sort the List. We also saw how the Collections.reversed and Collections.reverseOrder methods work. Finally, we took a look at how you can also use the Java 8 List.sort method.

If you like this post, please do let me know via the comments box below.  You can also connect with me via my Facebook Page or subscribe to my Youtube channel!

Related Post

leave a Comment