Sorting
Basics of Sorting
- Sorting is a useful operation on ArrayLists which allows you to arrange the elements in either ascending or descending order.
- The
java.util.Collectionsclass in Java provides multiple sorting methods for ArrayLists. - Remember to import java.util.Collections when you need to sort ArrayLists in your programs.
Sorting an ArrayList
- The simplest way is to use the
sort()method provided by java.util.Collections which sorts data in ascending order by default. - The format is:
Collections.sort(listName);. - The data type of ArrayList elements needs to support the
compareTo()method as thesort()method works by comparing elements. - For primitive types like Integer and String, which have natural ordering, they implement the
Comparableinterface and hencesort()can be used directly.
Sorting in Descending Order
- If you want to sort in descending order, you also use
sort()but with aCollections.reverseOrder()argument. - The format is:
Collections.sort(listName, Collections.reverseOrder());. - Specially, for numerical data types, this will result in a list sorted from highest to lowest values.
Custom Sorting with Comparator
- Java allows you to define your own sorting rules with Comparator.
- You can define a new Comparator instance, overriding the
compare()method to specify how two elements should be compared. - The custom comparator can then be passed to the
sort()method as an argument. - For example, if we have an ArrayList of custom objects, we can create a Comparator that compares objects based on a specific attribute:
Collections.sort(listName, new Comparator<CustomObject>() {
@Override
public int compare(CustomObject o1, CustomObject o2) {
return o1.getAttribute().compareTo(o2.getAttribute());
}
});
Always keep in mind: sorting can greatly enhance the usability and efficiency of your data structures, but also adds a computational cost. Use wisely!