标准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