8

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

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

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

提前致谢

4

1 回答 1

5

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

但是,请注意,如果您HashMap通过许多可用的集合方法构造集合(包括 mutable 和 immutable ),Scala 将隐式使用默认容量信息。例如,如果您调用mapa HashMap,它将使用mapdefined on TraversableLike(如下所示),并且您可以看到它为提供该容量信息的构建器提供了“大小提示”。

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
}
于 2012-04-08T14:38:58.830 回答