首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在Scala中对数组进行排序?

如何在Scala中对数组进行排序?
EN

Stack Overflow用户
提问于 2009-07-15 14:55:56
回答 5查看 88.5K关注 0票数 87

我可以看到有一个排序对象Sorting,上面有一个quicksort方法quickSort

使用它,对任意类型的对象数组进行排序的代码示例是什么?看起来我需要传入一个Orderable特征的实现,但是我不确定语法。

另外,我更喜欢用“Scala方式”来回答这个问题。我知道我可以只使用Java库。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2009-07-15 15:04:25

Sorting.quickSort声明了接受数字或字符串数组的函数,但我假设您的意思是要对自己的类的对象列表进行排序?

我认为您正在查看的函数是

代码语言:javascript
复制
quickSort [K](a : Array[K])(implicit view$1 : (K) => Ordered[K]) : Unit

如果我没理解错的话,这意味着数组中的对象必须具有Ordered特征。因此,您的类必须扩展Ordered (或者必须混合它),因此必须实现该特征的compare方法。

所以从书中摘取一个例子:

代码语言:javascript
复制
class MyClass(n: Int) extends Ordered[MyClass] {
   ...
  def compare(that: MyClass) =
    this.n - that.n
}

因此,给定一个ArrayMyClass,那么Sorting.quickSort应该可以工作。

票数 32
EN

Stack Overflow用户

发布于 2011-08-24 04:23:45

使用Scala 2.8或更高版本,可以执行以下操作:

代码语言:javascript
复制
List(3,7,5,2).sortWith(_ < _)

这使用了java.util.Arrays.sort,quicksort的一个实现。

票数 103
EN

Stack Overflow用户

发布于 2012-12-01 06:08:49

现在这个也行得通:

List(3,7,5,2).sorted

票数 60
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1131925

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档