标准 API 中是否存在自然比较器?

2022-08-31 16:17:16

我需要一个比较器作为策略模式的一部分,它可以使用对象的自然排序或一些自定义排序。对于自然排序情况,我写了一个简单的比较器:

private static class NaturalComparator<T extends Comparable<? super T>> implements Comparator<T> {
    @Override
    public int compare(T o1, T o2) {
        return o1.compareTo(o2);
    }
}

看起来很简单,但我想知道是否有人知道标准API中的一个。我看了一下TreeMap,它没有这样的类,所以当编写代码时,显然答案是否定的,但也许是后来添加的。


答案 1

添加到 Java 8 中的 Comparator 中

static <T extends Comparable<? super T>> Comparator<T> naturalOrder()

像这样使用它,例如:

Comparator<Double> natural = Comparator.<Double>naturalOrder();
return natural.compare(1.0, 1.1));

答案 2

是的,JDK绝对有它!在这里:

Collections.reverseOrder(Collections.reverseOrder())

开玩笑。(但这是真的。(只是不要真正使用它。(永远)))


推荐