【问题标题】:How to store HashMap values separately in scala?如何在scala中分别存储HashMap值?
【发布时间】:2015-01-01 23:55:29
【问题描述】:

我有一个由一个应用程序生成并由另一个应用程序使用的 scala 哈希图。 hashmap 很大,比如 100MB 或更多。

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

目前整个地图在第二个应用程序启动时由第二个应用程序加载到内存中。我试图只加载内存中的键,稍后在地图中查找键时,它应该给出存储在磁盘。有没有办法做到这一点?如果使用标准序列化,单独保存每个值并即时访问它们将花费大量时间。有哪些替代方案?

【问题讨论】:

  • 第二个应用会检查多少百分比的值?
  • Hash Map 在这里像一个查找表一样使用,一次通过映射最多搜索 100-200 个键的值。

标签: scala serialization hashmap


【解决方案1】:

您可能需要考虑为此使用内存映射文件。你可以自己滚动。

假设您可以稍微更改您的界面并使用您可以查看的 3rd 方库

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

【讨论】:

  • 谢谢你的回复。我试过FileHashMap,他们在填充HashMap时接缝很慢,而且他们生成的文件很大。大约 500MB 大小。
猜你喜欢
  • 1970-01-01
  • 2012-02-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-12
  • 2019-06-04
  • 1970-01-01
  • 2012-06-30
相关资源
最近更新 更多