Java

Sorting with Comparator

admin by @admin ADMIN
1d ago
May 31, 2026
Public
0 0 up · 0 down Sign in to vote
`Comparator.comparing`, `thenComparing`, and `reversed()` chain into expressive multi-field sorts. Way cleaner than the old Comparable spaghetti.
Java
Raw
import java.util.*;
import java.util.stream.*;

class Demo {
    record User(String name, int age) {}

    void example() {
        var users = new ArrayList<>(List.of(
            new User("Alice", 30),
            new User("Bob",   25),
            new User("Cara",  30),
            new User("Dave",  25)
        ));

        // Single-key
        users.sort(Comparator.comparing(User::age));

        // Multi-key: age desc, then name asc
        users.sort(
            Comparator.comparing(User::age).reversed()
                .thenComparing(User::name)
        );
        users.forEach(System.out::println);

        // Sort stream → new list
        List<User> sorted = users.stream()
            .sorted(Comparator.comparing(User::name))
            .toList();

        // Null-safe comparisons
        users.sort(Comparator.comparing(User::name, Comparator.nullsLast(Comparator.naturalOrder())));
    }
}
Tags

Save your own code snippets

Create a free account and build your private vault. Share publicly whenever you want.