自然排序和总排序之间的差异

2022-09-01 00:02:59

我碰巧遇到许多语句,例如在对数组或集合进行排序时需要自然排序时使用ableable,以及用于总排序的比较器。

您可能听说过的版本可能相同或不同,具有相同的含义,但最终它是两者之间的区别因素之一(比较器和可比较的接口)。

但是,我在任何地方都找不到这两种排序类型之间的区别。如果有人能用一个很好的例子来解释它,我将不胜感激:)


答案 1

总排序意味着所有值都可以与所有其他值进行比较。例如,如果你有一个集合,并且没有自然的总顺序(但你可以发明一个)BigDecimalString

在Java中,自然顺序被定义为JVM提供的排序。这可能与人们可能认为的自然秩序不符。例如,字符串按 ASCIIbetic 方式排序。这意味着大写字母在小写字母之前,在小写字母之前Za102

http://docs.oracle.com/javase/7/docs/api/java/lang/Comparable.html

此接口对实现它的每个类的对象施加总排序。这种排序称为类的自然排序,类的 compareTo 方法称为其自然比较方法。


答案 2

总排序是一个通用的数学概念。它主要与偏序不同,因为对于集合 X 中的每个 ab,“a <= b”或“b <= a”都是有意义和真实的。就Java而言,这意味着在两个实例中,一个实例必须大于或等于另一个(即比较它们是有意义的)。Comparable