7
我目前使用的是scala 2.9.1。 我创建使用mutable.HashMap:更改Scala的默认容量/负载因子mutable.HashMap
> val m = mutable.HashMap.empty[Int, Int]
我有点新阶。在java中,我能够在HashMap的构造函数中指定容量和加载因子。我无法找到任何方式在scala中做同样的事情。
在此先感谢
我目前使用的是scala 2.9.1。 我创建使用mutable.HashMap:更改Scala的默认容量/负载因子mutable.HashMap
> val m = mutable.HashMap.empty[Int, Int]
我有点新阶。在java中,我能够在HashMap的构造函数中指定容量和加载因子。我无法找到任何方式在scala中做同样的事情。
在此先感谢
根据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
}
谢谢。但我的要求是actaully像HashMap中的java的,我可以指定loadfactor等在创建(我后来修改了算法,功能更强的风格..但我感兴趣的是一个无论如何,直接等同于非此即彼。接受答案 – 2012-04-25 18:37:23