This answer解释了如何在使用其内置方法.sortBy时颠倒数组的排序顺序。如何在使用scala.util.Sorting.quickSort时颠倒排序顺序
发布于 2018-02-09 17:46:02
如下所示:
import scala.util.Sorting.quickSort
val a = Array(1, 2, 3)
quickSort[Int](a)(Ordering[Int].reverse)
// ^---^ the most important bit
println(a.toVector) // Vector(3, 2, 1)quickSort是一个具有Int、Float和Double重载的函数,这些重载不允许您指定顺序,并且是具有Ordering实例的任何类型[T]的泛型重载。
如果您有一个由Int、Float或Double组成的数组,则重载解析将首选专用版本,因此您将无法手动传递Ordering,除非您指定一个类型参数(因此编译器现在只有一个选择)。
对于这三种类型以外的数组(例如Long),您可以省略类型参数,因为只有一个有效选项:
val b = Array(1L, 2L, 3L)
quickSort(b)(Ordering[Long].reverse)
println(b.toVector) // Vector(3, 2, 1)发布于 2018-02-09 17:39:57
如果你查找quickSort的类型签名,你会发现:
def quickSort[K](a: Array[K])(implicit arg0: math.Ordering[K]): Unit显然,这意味着您可以通过实现一个隐式Ordering[K] (或传入一个)来自定义行为。
示例:
val a = Array(3, 4, 2, 3)
quickSort[Int](a)(Ordering.Int.reverse)https://stackoverflow.com/questions/48702675
复制相似问题