【问题标题】:Create SortedMap from Iterator in scala在scala中从Iterator创建SortedMap
【发布时间】:2013-02-23 15:53:55
【问题描述】:

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

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

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

 it.toSortedMap 

SortedMap.from(it)

在我可能错过的标准 Scala 库中?

编辑:混合@Rex 的回答中的两个想法我想出了这个:

SortedMap(it.to:_*)

这很好用并且避免了指定SortedMap的类型签名。不过看起来仍然很有趣,因此欢迎提供进一步的答案。

【问题讨论】:

    标签: scala collections sortedmap


    【解决方案1】:

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

    import collection.immutable._
    
    Iterator(1,2,3).to[SortedSet]
    

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

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

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

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

    【讨论】:

    • 两者都很好,将它们混合在一起我想出了一个想法,我将其添加到问题中。
    • @Chirlo - 好主意!请注意,它不如++ 解决方案高效,因为它确实需要创建一个中间Seq。但是,如果您不是在效率很重要的情况下(大多数情况下),那么它可能是一个不错的选择!
    • 注意SortedMap.fromAPI of Scala 2.13 的一部分。
    猜你喜欢
    • 2011-01-10
    • 2018-05-09
    • 2012-06-16
    • 1970-01-01
    • 2011-02-14
    • 2010-10-14
    • 2015-04-15
    • 2014-03-24
    相关资源
    最近更新 更多