如何在Scala中声明一组有序的int数组?

时间:2015-06-12 16:25:40

标签: scala sortedset

我已经为scala.collection.mutable.SortedSet:

尝试了以下所有内容
var s = SortedSet[Array[Int]]
var s = SortedSet[Array[Int]]()
var s = new SortedSet[Array[Int]]
var s = new SortedSet[Array[Int]]()
var s = SortedSet[Array]
var s = SortedSet[Array]()
var s = new SortedSet[Array]()

我不知道为什么要在Scala中声明这些东西是如此困难。我想要的只是一组有序的Int-arrays。

1 个答案:

答案 0 :(得分:2)

SortedSet不是“默认”集合,因此未在Predef中定义。

首先导入它然后它应该工作:

import scala.collection.SortedSet
val s = SortedSet[Array[Int]]()

接下来,您需要定义隐式排序:

implicit val arrayOrdering = new Ordering[Array[Int]] {
   override def compare(x: Array[Int], y: Array[Int]): Int = ???
     // Implement whatever you mean by one array is greater than the other array
}

同样要小心Array - s,因为它是一个Java数组,因此它没有覆盖equalshashcode方法,也没有看到值相等,而是参考平等。