【发布时间】:2016-01-04 02:49:41
【问题描述】:
我有大量元素要保存在LinkedHashMap 中。问题是我确实有大量元素,即超过 Integer 类的大小。由于LinkedHashMap类的size()方法返回一个int,我认为LinkedHashMap的元素个数不能超过int的可能性。那正确吗?如果是,我该怎么办?
我还应该提到,我实际上不知道问题在我的代码中究竟发生在哪里。这只是我的猜测,问题出在LinkedHashMap 的size() 方法上。我只是得到与here 相同的错误。
【问题讨论】:
-
“如果是,我该怎么办?”。重新考虑您的设计。为什么首先要尝试存储具有超过 20 亿个值的 Map?
-
不要忘记
LinkedHashMap中的每个条目占用 40 字节加上实际元素的内存开销,因此至少有 80 GB 的 堆。你可能不想要LinkedHashMap。您可能需要一个数据库。你可能想要完全不同的东西。 -
你真的需要保留这么多数据的迭代顺序吗?
-
亲爱的@Tunaki 和其他朋友,非常感谢你们的cmets。在你的cmets之后,我才真正意识到我要制造多大的灾难!所以,我改变了我的程序,让它可以正常工作。实际上,我想为小说的每个单词提取一些信息,而小说中的单词数量绝对很大。因此,我以一种可以逐章处理文本的方式更改了代码,问题就解决了。再次感谢您的帮助:)
标签: java hashmap integer overflow