我有一个 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
的类型签名.不过看起来仍然很有趣,所以欢迎进一步的答案。
最佳答案
您正在寻找的功能确实存在于其他组合中,但不是您想要的。如果你的集合只需要一个参数,你可以使用 .to[NewColl]
.所以,例如,
import collection.immutable._
Iterator(1,2,3).to[SortedSet]
另外,
SortedMap
伴生对象有一个可变参数 apply 可用于创建排序映射,如下所示:SortedMap( List((1,"salmon"), (2,"herring")): _* )
(注意
: _*
,这意味着使用内容作为参数)。不幸的是,这需要一个 Seq
,不是 Iterator
.所以你最好的选择是你已经在做的方式。
关于scala - 在 Scala 中从迭代器创建 SortedMap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15042421/