Collections 入门

Comparator 工厂与流畅排序

使用 Comparator 工厂方法构建可读、可组合的排序规则。

✕ Anonymous comparator
people.sort(new Comparator<Person>() {
    @Override
    public int compare(Person a, Person b) {
        int byName = a.name().compareTo(b.name());
        return byName != 0 ? byName : Integer.compare(a.age(), b.age());
    }
});
✓ Java 8+
people.sort(Comparator.comparing(Person::name)
        .thenComparingInt(Person::age));
发现此代码有问题? 告诉我们。
🧩

可组合

排序规则可以自然地链式组合。

👁

更易审查

排序键及其优先级一目了然。

🐛

比较更安全

专用辅助方法可避免容易出错的算术比较器。

旧方式
匿名 Comparator
现代方式
Comparator 工厂
自 JDK
8
难度
入门
Comparator 工厂与流畅排序
可用

自 JDK 8 起可用(2014 年 3 月)

Comparator 工厂以声明式方式表达排序,无需手写分支即可组合主排序键和次排序键。