The sort()
method of the collections framework uses the merge sort algorithm to sort elements of a collection.
The merge sort algorithm is based on divide and conquers rule. To learn more about the merge sort, visit Merge Sort Algorithm.
Let's take an example of the sort()
method.
Example: Sorting in Ascending Order
import java.util.ArrayList;
import java.util.Collections;
class Main {
public static void main(String[] args) {
// Creating an array list
ArrayList<Integer> numbers = new ArrayList<>();
// Add elements
numbers.add(4);
numbers.add(2);
numbers.add(3);
System.out.println("Unsorted ArrayList: " + numbers);
// Using the sort() method
Collections.sort(numbers);
System.out.println("Sorted ArrayList: " + numbers);
}
}
Output
Unsorted ArrayList: [4, 2, 3] Sorted ArrayList: [2, 3, 4]
As you can see, by default, the sorting occurs in natural order (ascending order). However, we can customize the sorting order of the sort()
method.
Customized Sorting Order
In Java, the sort()
method can be customized to perform sorting in reverse order using the Comparator
interface.
Example: Sorting in Descending Order
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
class Main {
public static void main(String[] args) {
// Creating an array list
ArrayList<Integer> numbers = new ArrayList<>();
// Add elements
numbers.add(4);
numbers.add(2);
numbers.add(3);
System.out.println("Unsorted ArrayList: " + numbers);
// Using the sort() method
Collections.sort(numbers);
System.out.println("Natural Sorting: " + numbers);
// Using the customized sort() method
Collections.sort(numbers, new CustomComparator());
System.out.println("Customized Sorting: " + numbers);
}
}
class CustomComparator implements Comparator<Integer> {
@Override
public int compare(Integer animal1, Integer animal2) {
int value = animal1.compareTo(animal2);
// elements are sorted in reverse order
if (value > 0) {
return -1;
}
else if (value < 0) {
return 1;
}
else {
return 0;
}
}
}
Output
Unsorted ArrayList: [4, 2, 3] Natural Sorting: [2, 3, 4] Customized Sorting: [4, 3, 2]
In the above example, we have used the sort()
method with CustomComparator as an argument.
Here, CustomComparator is a class that implements the Comparator
interface. Learn more about the Java Comparator Interface.
We then override the compare()
method. The method will now sort elements in reverse order.