在 Scala 中将 Int 列表转换为 SortedSet
如果我有一个整数列表,例如:
val myList = 列表(3,2,1,9)
从列表或整数序列创建 SortedSet 的正确/首选方法是什么,其中项目按从最小到最大排序?
如果你用枪指着我的头我会说:
val itsSorted = collection.SortedSet(myList)
但我收到一个错误,提示没有为 List[Int] 定义隐式排序。
If I have a List of Ints like:
val myList = List(3,2,1,9)
what is the right/preferred way to create a SortedSet from a List or Seq of Ints, where the items are sorted from least to greatest?
If you held a gun to my head I would have said:
val itsSorted = collection.SortedSet(myList)
but I get an error regarding that there is no implicit ordering defined for List[Int].
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
使用:
按照您使用的方式,编译器认为您想要创建
SortedSet[List[Int]]
而不是SortedSet[Int]
。这就是为什么它抱怨List[Int]
没有隐式排序。请注意方法签名中
A*
类型的重复参数:要将
myList
视为A
使用的序列参数,_*
类型注释。Use:
The way you used it, the compiler thinks you want to create a
SortedSet[List[Int]]
not aSortedSet[Int]
. That's why it complains about no implicit Ordering forList[Int]
.Notice the repeated parameter of type
A*
in the signature of the method:To treat
myList
as a sequence argument ofA
use, the_*
type annotation.您还可以利用
CanBuildFrom
实例,并执行以下操作:You could also take advantage of the
CanBuildFrom
instance, and do this:似乎没有直接接受
List
的构造函数(如果我错了,请纠正我)。但你可以轻松地写出相同的效果。 (参见http://www.scala-lang.org/docu/files/collections- api/collections_20.html。)
There doesn't seem to be a constructor that directly accepts
List
(correct me if I'm wrong). But you can easily writeto the same effect. (See http://www.scala-lang.org/docu/files/collections-api/collections_20.html.)
如果您无论如何都必须映射,这尤其有用:
This is especially useful if you have to map anyway: