【问题标题】:Change default capacity/load factor of scala mutable.HashMap更改 scala mutable.HashMap 的默认容量/负载因子
【发布时间】:2012-04-08 14:34:45
【问题描述】:

我目前使用的是 scala 2.9.1。 我创建一个 mutable.HashMap 使用:

> val m = mutable.HashMap.empty[Int, Int]

我对 scala 有点陌生。在 java 中,我能够在 HashMap 的构造函数中指定容量和负载因子。我无法在 scala 中找到任何方法来做同样的事情。

提前致谢

【问题讨论】:

    标签: scala collections


    【解决方案1】:

    根据 API,这似乎是不可能的。一种解释是强烈不鼓励可变集合,不可变集合不需要默认容量信息,因为在构造时必须知道项目的数量。

    但是,请注意,如果您通过许多可用的集合方法构造集合(包括可变和不可变 HashMap),Scala 将隐式使用默认容量信息。例如,如果您在HashMap 上调用map,它将使用在TraversableLike 上定义的map(转载如下),您可以看到它为提供该容量的构建器提供了“大小提示”信息。

    def map[B, That](f: A => B)(implicit bf: CanBuildFrom[Repr, B, That]): That = {
      val b = bf(repr)
      b.sizeHint(this)
      for (x <- this) b += f(x)
      b.result
    }
    

    【讨论】:

    • 谢谢.. 但我的要求实际上是对像 HashMap 这样的 java,我可以在创建时指定负载因子等(我随后将我的算法修改为更具功能性的风格.. 但我很感兴趣在直接等价的情况下:).. 无论如何都接受答案
    猜你喜欢
    • 2013-08-27
    • 2018-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-20
    • 2010-11-22
    • 1970-01-01
    • 2014-02-05
    相关资源
    最近更新 更多