在scala中从迭代器创建SortedMap

2024-01-08

我有一个val it:Iterator[(A,B)]我想创建一个SortedMap[A,B]与我从中得到的元素Iterator。我现在的做法是:

val map = SortedMap[A,B]() ++ it

它工作正常,但使用起来感觉有点尴尬。我检查了SortedMapdoc,但找不到更优雅的东西。有没有类似的东西:

 it.toSortedMap 

or

SortedMap.from(it)

在标准 Scala 库中,也许我错过了?

Edit:将 @Rex 的回答中的两个想法混合起来我想出了这个:

SortedMap(it.to:_*)

这工作得很好并且避免了必须指定的类型签名SortedMap。不过看起来仍然很有趣,所以欢迎进一步的答案。


您正在寻找的功能确实存在于其他组合中,但不存在您想要的组合。如果您的集合只需要一个参数,您可以使用.to[NewColl]。所以,举例来说,

import collection.immutable._

Iterator(1,2,3).to[SortedSet]

另外,SortedMap伴随对象有一个 varargs apply ,可用于创建排序映射,如下所示:

SortedMap( List((1,"salmon"), (2,"herring")): _* )

(注意: _*这意味着使用内容作为参数)。不幸的是,这需要一个Seq,不是一个Iterator.

所以你最好的选择就是你已经这样做的方式。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在scala中从迭代器创建SortedMap 的相关文章

随机推荐