我有一个val it:Iterator[(A,B)]
,我想创建一个SortedMap[A,B]
,其中包含我从Iterator
中获取的元素。我现在的方式是:
val map = SortedMap[A,B]() ++ it
它工作正常,但使用感觉有点尴尬。我检查了SortedMap
doc但找不到更优雅的东西。是否有类似的东西:
it.toSortedMap
或
SortedMap.from(it)
在标准的Scala库中,我可能错过了吗?
编辑:混合来自@ Rex答案的两个想法我想出了这个:
SortedMap(it.to:_*)
哪个工作正常,避免必须指定SortedMap
的类型签名。虽然看起来仍然很有趣,但欢迎进一步的答案。
答案 0 :(得分:5)
您正在寻找的功能确实适用于其他组合,但不适用于您想要的功能。如果您的集合只需要一个参数,则可以使用.to[NewColl]
。所以,例如,
import collection.immutable._
Iterator(1,2,3).to[SortedSet]
此外,SortedMap
伴随对象有一个varargs apply,可用于创建排序映射,如下所示:
SortedMap( List((1,"salmon"), (2,"herring")): _* )
(注意: _*
,这意味着使用内容作为参数)。不幸的是,这需要Seq
,而不是Iterator
。
所以你最好的选择就是你已经这样做了。