当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Scala math.Ordered用法及代码示例


用法 一

trait Ordered[A] extends Comparable[A]

具有单一自然顺序的数据的特征。在使用此 trait 之前,请参阅 scala.math.Ordering 以获取有关是否改为使用 scala.math.Ordering 的更多信息。

实现此特征的类可以使用scala.util.Sorting 进行排序,并且可以与标准比较运算符(例如 > 和 <)进行比较。

Ordered 应该用于具有单一自然排序(如整数)的数据,而 Ordering 允许多个排序实现。如有必要,将隐式创建 Ordering 实例。

scala.math.Ordering 是此特征的替代方案,它允许为同一类型定义多个排序。

scala.math.PartiallyOrdered 是部分有序数据的此特征的替代方案。

例如,创建一个实现 Ordered 的简单类,然后使用 scala.util.Sorting 对其进行排序:

case class OrderedClass(n:Int) extends Ordered[OrderedClass] {
	def compare(that: OrderedClass) =  this.n - that.n
}

val x = Array(OrderedClass(1), OrderedClass(5), OrderedClass(3))
scala.util.Sorting.quickSort(x)
x

重要的是Ordered[A] 实例的equals 方法与比较方法一致。但是,由于类型擦除语义固有的限制,没有合理的方法为 Ordered[A] 的实例提供相等的默认实现。因此,如果您需要能够在Ordered[A] 的实例上使用相等,则必须在继承或实例化时自己提供。

重要的是Ordered[A] 实例的hashCode 方法与compare 方法一致。但是,不可能提供合理的默认实现。因此,如果您需要能够计算Ordered[A] 实例的哈希值,您必须在继承或实例化时自己提供它。

也可以看看:

伴生:

object

源码:

Ordered.scala

用法 二

object Ordered

伴生:

class

源码:

Ordered.scala

相关用法


注:本文由纯净天空筛选整理自scala-lang.org大神的英文原创作品 math.Ordered。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。