scala - 在 Scala 中从迭代器创建 SortedMap

标签 scala collections sortedmap

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

相关文章:

java - Java FileInputStream 是否为写入锁定文件

java - 为什么 Map.remove() 不使用类型参数?

java - 为什么集合框架中没有堆栈接口(interface)?

java - 优化 Map 中过滤值的方式

java并发映射按值排序

scala - 什么是Scala 'killer app'?

scala - 如何强制SBT使用Java 8?

Java TreeMap 比较器

scala - 元组到 Spark Scala中的数据帧

当静态类型为 Map 时,Scala SortedMap.map 方法返回未排序的 map