java - Java中的HashMap,1亿个条目

标签 java hashmap

我想将 1 亿个术语及其频率(在文本数据库中)存储到 HashMap <String, Double> 中.它给了我“内存不足”错误。我试图将堆空间增加到 -Xmx15000M .但是它运行了半个小时,然后再次抛出相同的异常。我试图从中读取单词和频率的文件大小为 1.7GB。

任何帮助将不胜感激。

谢谢:-)

最佳答案

对于这样的文字处理,如果您可以忍受更长的查找时间,答案通常是树而不是 HashMap 。这种结构对于自然语言来说非常节省内存,其中许多单词都有共同的起始字符串。

根据输入,Patricia 树可能会更好。

(另外,如果这确实是来自自然语言的词,你确定你真的需要 100,000,000 个词条吗?大多数常用词的数量都低得惊人,商业解决方案(词预测、拼写校正)很少使用超过 100,000 个词与语言无关。)

关于java - Java中的HashMap,1亿个条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4080370/

相关文章:

java - SQL语句语法错误 "CREATE EXTENSION[*] IF NOT EXISTS UUID_OSSP "

java - 如何获取类文件的类参数

java - 使用相同的支持 bean 将数据从 page1 传递到 page2 的最佳方法是什么?

java - 集合 - 长类哈希码与整数类哈希码

java - 寻找一种用Java制作简单数据库或列表的方法(比HashMap更高级,比JDBC更容易)

java - 使用 Log4j 捕获异常

java - Android 软键盘在按钮单击时不显示

java - 使用JAVA高效查找JSON中的键值

java - 如何从 hashmap json 对象打印值

java - 添加和删​​除 ArrayList 中设置为 hashmap 中的值的元素