When we need alternate orderings, we can use a custom Comparator to compare objects.
Usage
Collections.sort(list, comparator)list.sort(comparator)Arrays.sort(array, comparator)
Implementations
Anonymous Classes
List<Employee> employees = getEmployees();
Collections.sort(employees, new Comparator<Employee>() {
@Override
public int compare(Employee e1, Employee e2) {
return e1.getName().compareTo(e2.getName());
}
});Lambda
employees.sort((e1, e2) -> e1.getName().compareTo(e2.getName()));Comparator static Methods
// Sort by name
employees.sort(Comparator.comparing(Employee::getName));
// Sort by salary in descending order
employees.sort(Comparator.comparingDouble(Employee::getSalary).reversed());
// Complex sorting: by department, then salary descending
employees.sort(Comparator.comparing(Employee::getDepartment) .thenComparingDouble(Employee::getSalary).reversed());