在Scala中指定HashMap的大小

Bru*_*uno 9 scala hashmap

我正在使用Scala的可变HashMap来逐步增加数百万个键值对.调整这些HashMaps的大小现在是我程序中最慢的部分.我如何告诉Scala从一开始就创建一个非常大的HashMap,以便它(几乎)永远不需要调整大小?

我也很感激提出另一个符合我需求的Scala/Java集合的想法.添加新的键值对并检索给定键的值应该在大致恒定的时间内都可行.

Yur*_*riy 10

一种可能的方式:

import scala.collection.mutable.{HashTable, DefaultEntry}

trait BigHashTable[A, B] extends HashTable[A, DefaultEntry[A, B]] {
  override def initialSize: Int = 1024 // 16 - by default
}

val x = new HashMap[Int, String] with BigHashTable[Int, String]
Run Code Online (Sandbox Code Playgroud)

另一个:

class MyHashMap[A, B](initSize : Int) extends HashMap[A, B] {
  override def initialSize: Int = initSize // 16 - by default
}

val x = new MyHashMap[Int, String](1024)
Run Code Online (Sandbox Code Playgroud)