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

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

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,并且没有这样的类,所以当编写代码时,显然的答案是否定的,但也许是在稍后添加的。


在Java 8中添加到比较器中:

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

像这样使用它,例如:

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

是的,JDK肯定有它! 这里是:

Collections.reverseOrder(Collections.reverseOrder())

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


JDK没有它,但它被称为ComparableComparator ,它存在于很多框架中,比如Spring,Apache Commons,Hibernate和其他许多框架

链接地址: http://www.djcxy.com/p/91929.html

上一篇: Does a natural comparator exist in the standard api?

下一篇: Why doesn't java.lang.Number implement Comparable?