2014-03-26 63 views
7

我使用Scala的可變HashMap來遞增地添加數以百萬計的鍵值對。這些HashMaps的大小調整現在是我的程序中最慢的部分。我如何告訴Scala從一開始就創建一個非常大的HashMap,以便它(幾乎)不需要調整大小?在Scala中指定HashMap的大小

我也很感謝任何想法,提出另一個適合我的需求的Scala/Java集合。添加一個新的鍵值對並獲取給定鍵的值應該在大致恆定的時間內可行。

回答

7

其中一個可能的方式:

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] 

另一個問題:

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) 
+1

謝謝!第二種解決方案對我來說似乎更好。有沒有理由更喜歡第一個解決方案而不是第二個解決方案? – Bruno