我有一个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/

10-11 04:08