如果我有一个Ints列表,如:
val myList = List(3,2,1,9)
从List或Seq of Ints创建SortedSet的正确/首选方法是什么,其中项目从最小到最大排序?
如果你把枪拿到我头上,我会说:
val itsSorted = collection.SortedSet(myList)
但是我得到一个错误,即没有为List [Int]定义隐式排序.
huy*_*hjl 39
使用:
collection.SortedSet(myList: _*)
Run Code Online (Sandbox Code Playgroud)
你使用它的方式,编译器认为你想创建一个SortedSet[List[Int]]
不是SortedSet[Int]
.这就是为什么它抱怨没有隐含的订购List[Int]
.
注意A*
方法签名中重复的类型参数:
def apply [A] (elems: A*)(implicit ord: Ordering[A]): SortedSet[A]
Run Code Online (Sandbox Code Playgroud)
为了治疗myList
作为序列参数A
使用,该_*
类型的注释.
Ben*_*nor 12
您还可以利用该CanBuildFrom
实例,并执行以下操作:
val myList = List(3,2,1,9)
myList.to[SortedSet]
// scala.collection.immutable.SortedSet[Int] = TreeSet(1, 2, 3, 9)
Run Code Online (Sandbox Code Playgroud)
似乎没有直接接受的构造函数List
(如果我错了,请纠正我).但你可以轻松写
val myList = List(3,2,1,9)
val itsSorted = collection.SortedSet.empty[Int] ++ myList
Run Code Online (Sandbox Code Playgroud)
达到同样的效果.(见http://www.scala-lang.org/docu/files/collections-api/collections_20.html.)