How to Sort in Descending Order in Java - Simple Guide
To sort in descending order in Java, use
Collections.sort() with Collections.reverseOrder() for lists, or use Arrays.sort() with a custom comparator. For example, Collections.sort(list, Collections.reverseOrder()) sorts a list from highest to lowest.Syntax
To sort a list in descending order, use:
Collections.sort(list, Collections.reverseOrder())- sorts a list from highest to lowest.Arrays.sort(array, Collections.reverseOrder())- sorts an array of objects in descending order.
Note: For primitive arrays (like int[]), you need to convert to wrapper classes or use other methods.
java
Collections.sort(list, Collections.reverseOrder());
Example
This example shows how to sort a list of integers in descending order using Collections.sort() and Collections.reverseOrder().
java
import java.util.*; public class DescendingSortExample { public static void main(String[] args) { List<Integer> numbers = new ArrayList<>(Arrays.asList(5, 3, 8, 1, 9)); Collections.sort(numbers, Collections.reverseOrder()); System.out.println(numbers); } }
Output
[9, 8, 5, 3, 1]
Common Pitfalls
Common mistakes include:
- Trying to use
Collections.reverseOrder()on primitive arrays likeint[], which causes errors because it expects objects. - Sorting without specifying the comparator, which sorts in ascending order by default.
- Modifying the list after sorting without re-sorting.
java
import java.util.*; public class PitfallExample { public static void main(String[] args) { // Wrong: primitive array with reverseOrder (won't compile) // int[] arr = {5, 3, 8}; // Arrays.sort(arr, Collections.reverseOrder()); // Error // Right: use Integer[] instead Integer[] arr = {5, 3, 8}; Arrays.sort(arr, Collections.reverseOrder()); System.out.println(Arrays.toString(arr)); } }
Output
[8, 5, 3]
Quick Reference
| Method | Usage | Notes |
|---|---|---|
| Collections.sort(list, Collections.reverseOrder()) | Sorts a List in descending order | Works with Lists of objects |
| Arrays.sort(array, Collections.reverseOrder()) | Sorts an Object array in descending order | Use with wrapper classes, not primitives |
| Convert primitive array to wrapper array | Then use Arrays.sort with reverseOrder | Needed for primitive types like int[] |
Key Takeaways
Use Collections.sort(list, Collections.reverseOrder()) to sort lists descending.
Arrays.sort() with Collections.reverseOrder() works for Object arrays, not primitives.
Primitive arrays need conversion to wrapper types for descending sort.
Always specify the comparator to sort in descending order.
Common errors come from mixing primitive arrays with object comparators.