Comparator.reverseOrder() 与 Collections.reverseOrder()

tim*_*img 3 java sorting collections comparator

两者有区别吗?如果是,那是什么?

当我将它们用于优先级队列时,两者的排序方式相同。

And*_*eas 6

如果您使用好的 IDE,很容易看到 Java 运行时库方法的源代码。例如,在 Eclipse 中,当光标位于方法上时按 F3。

如果你在Comparator.reverseOrder()方法上这样做,你会看到:

public static <T extends Comparable<? super T>> Comparator<T> reverseOrder() {
    return Collections.reverseOrder();
}
Run Code Online (Sandbox Code Playgroud)

结论:它们完全一样。

  • 从实现和性能的角度来看,它们是相同的。但是`Collections.reverseOrder()`不是类型安全的,因为它不强制类型参数是`Comparable`的子类型。所以 `Comparator.reverseOrder()` 是更好的选择。 (3认同)