Java List Sorting
Sorting lists in Java can be done using various methods provided by the Collections
class or by implementing custom sorting logic. The List
interface includes classes like ArrayList
and LinkedList
, which can be sorted.
1. Sorting with Collections.sort()
The Collections.sort()
method can sort lists of objects that implement the Comparable
interface.
Example: Sorting Strings
import java.util.ArrayList;
import java.util.Collections;
public class SortingExample {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
list.add("Banana");
list.add("Apple");
list.add("Cherry");
Collections.sort(list);
System.out.println(list); // Outputs: [Apple, Banana, Cherry]
}
}
2. Custom Sorting with Comparator
For custom sorting, you can use a Comparator
to define the sorting logic.
Example: Reverse Order Sorting
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
public class CustomSortingExample {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
list.add("Banana");
list.add("Apple");
list.add("Cherry");
Collections.sort(list, Comparator.reverseOrder());
System.out.println(list); // Outputs: [Cherry, Banana, Apple]
}
}
3. Sorting Objects
To sort a list of custom objects, the objects must implement Comparable
or you must provide a Comparator
.
Implementing Comparable
:
public class Person implements Comparable<Person> {
private String name;
private int age;
// Constructor, getters, setters
@Override
public int compareTo(Person other) {
return this.age - other.age;
}
}
// In main method
Collections.sort(personList);
Using a Comparator
:
Collections.sort(personList, new Comparator<Person>() {
@Override
public int compare(Person p1, Person p2) {
return p1.getName().compareTo(p2.getName());
}
});
4. Key Takeaways
- Use
Collections.sort()
for sorting lists. - Implement
Comparable
in your class for natural ordering. - Use a
Comparator
for custom sorting logic. - Lambda expressions can simplify comparator definitions (Java 8+).