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+).