2014-11-05 36 views
3

我有一個由一個應用程序生成並由另一個應用程序生成的scala hashmap。散列表很大,像100MB或更大。如何分別在scala中存儲HashMap值?

var actMap = new collection.mutable.HashMap[String, Seq[Object]]; 

目前整個地圖被第二應用程序在內存中加載時,它starts.I正在嘗試只加載在內存中的鑰匙,後來在地圖上尋找鑰匙的時候,也應該給價值它存儲在磁盤中。無論如何要實現這一目標?如果使用標準序列化,單獨存儲每個值並在運行中訪問它們將花費大量時間。有什麼選擇?

+0

將被第二應用程序進行檢查多少百分比值? – 2014-11-05 18:03:33

+0

這裏使用的是Hash Map,就像查找表一樣,在某個時間100-200個關鍵字通過地圖查找其最大值。 – Balaram26 2014-11-05 18:08:15

回答

3

您可能想考慮使用內存映射文件。你可以推出自己的。

假設你可以稍微改變你的界面,並使用第三方庫,你可以看看

http://software.clapper.org/javautil/api/org/clapper/util/misc/FileHashMap.html

https://github.com/bmc/javautil/blob/master/src/main/java/org/clapper/util/misc/FileHashMap.java

+0

謝謝你的答覆。我已經試過了FileHashMap,它們在填充HashMap時接縫緩慢,並且由它們生成的文件非常大。像500MB左右的大小。 – Balaram26 2014-11-06 05:05:41