【问题标题】:The meaning of 'natural ordering' and its relation to the compareTo() method“自然排序”的含义及其与 compareTo() 方法的关系
【发布时间】:2017-03-29 19:00:56
【问题描述】:

在回顾 Java 中的数组主题时,我在 java.util 包的 Arrays 类中遇到了以下方法。

void sort(type[] array)

此外,我偶然发现了一些东西,我觉得需要更多解释。

该方法对数组中的元素按照它们的顺序进行排序 自然排序

我试着在下面总结一下我的疑惑:

  • 自然排序究竟是什么意思?

  • 基元和引用类型的自然排序是否不同?如果不同,如何?

  • 最后,Comparable<T> 接口的compareTo() 方法如何定义和/或覆盖自然排序

【问题讨论】:

  • 自然排序只是Java用来表达Comparable<T>接口强加的排序的命名法。

标签: java arrays methods interface implementation


【解决方案1】:

自然排序的确切含义是什么?

自然排序是由compareToComparable 定义的排序。例如,Integers 自然地从低到高排序。

`基元和引用类型的自然顺序是否不同,如果不同,如何?

从技术上讲,没有。基元的自然顺序(doubleboolean 与其包装类(DoubleBoolean)的顺序相同。

Comparable 接口的compareTo() 方法如何定义和/或覆盖自然顺序?

compareTo 定义了类的自然顺序,这就是 Javadoc 解释“数组中的所有元素都必须实现 Comparable 接口”的原因。

附带说明,通过为执行排序的情况定义 Comparator 来覆盖自然排序。例如,您可以使用Arrays.sort(T[], Comparator<? super T>)String[] 进行排序(在这种情况下,通用T 将变为String)。

【讨论】:

    【解决方案2】:

    由于compareTo(T o) 的实现,当我们对扩展Comparable 的类的实例进行排序时,我们谈论的是自然排序

    查看Comparable的javadoc:

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

    【讨论】:

      猜你喜欢
      • 2019-03-22
      • 2018-09-18
      • 1970-01-01
      • 2020-06-28
      • 1970-01-01
      • 2011-09-27
      • 2014-03-21
      • 2012-02-05
      • 1970-01-01
      相关资源
      最近更新 更多