我有一个val it:Iterator[(A,B)]
,我想用从SortedMap[A,B]
中得到的元素创建一个Iterator
。我现在的方法是:
val map = SortedMap[A,B]() ++ it
它工作正常,但使用起来有点尴尬。我检查了
SortedMap
文档,但找不到更优雅的东西。是否有类似的东西: it.toSortedMap
或者
SortedMap.from(it)
在我可能错过的标准Scala库中?
编辑:混合使用@Rex的答案中的两个想法,我想到了这个:
SortedMap(it.to:_*)
这工作得很好,避免了必须指定
SortedMap
的类型签名。虽然看起来仍然很有趣,所以欢迎进一步回答。 最佳答案
您要查找的功能确实存在于其他组合中,但不存在所需的功能。如果您的集合只需要一个参数,则可以使用.to[NewColl]
。因此,例如
import collection.immutable._
Iterator(1,2,3).to[SortedSet]
此外,
SortedMap
随播对象具有一个varargs套用,可用于创建排序后的 map ,如下所示:SortedMap( List((1,"salmon"), (2,"herring")): _* )
(请注意
: _*
,这意味着将内容用作参数)。不幸的是,这需要一个Seq
,而不是Iterator
。因此,最好的选择就是您已经在做的方式。
关于scala - 从Scala中的Iterator创建SortedMap,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15042421/