4 · Data & Collections · lesson 24 of 41

Comparable & Comparator

Natural order vs on-the-fly order.

Java
class User implements Comparable<User> {
    String name; int age;
    public int compareTo(User o) { return this.age - o.age; }
}

users.sort(Comparator.comparing((User u) -> u.name)
                     .thenComparingInt(u -> u.age).reversed());
Key takeaways
  • ✓Comparable defines the class's default order.
  • ✓Comparator lets you sort by any strategy at the call site.