6

我有一个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. 虽然看起来仍然很有趣,所以欢迎进一步的回答。

4

1 回答 1

6

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

import collection.immutable._

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

此外,SortedMap伴生对象有一个可变参数应用,可用于创建排序映射,如下所示:

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

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

所以你最好的选择是你已经这样做了。

于 2013-02-23T16:04:49.517 回答