Java multi-key comparator with nulls last
Java
import java.util.Comparator;
import java.util.List;
public final class Sorts {
public record Person(String name, Integer age) {}
public static List<Person> sort(List<Person> people) {
Comparator<Person> byName = Comparator.comparing(Person::name);
Comparator<Person> byAge = Comparator.comparing(
p -> p.age() == null ? 1 : 0);
Comparator<Person> full = byAge.thenComparing(Person::age, Comparator.nullsLast(Comparator.naturalOrder()))
.thenComparing(byName);
return people.stream().sorted(full).toList();
}
}