java - 如何在Android Collection中存储25000个对象(HashMap、LinkedHashMap、ArrayList、Map)

标签 java android collections

实际上,我从 Web 服务中获取了 25000 个 JSON 对象,并且我正在使用 Jackson 来解析它们,当我尝试将其纳入集合(HashMap、LinkedHashMap、Array List、Map)时,不幸的是使用了所有这些对象我遇到了“Android 中的内存不足异常”。有人可以之前用巨大的对象对此进行实验吗?对于我的情况,它最多可能会达到 50,000 个对象。那么我该如何更好地处理。我尝试通过扩展上述集合来创建一些自定义对象,但我还不够好,无法做到这一点。请提出任何建议。

最佳答案

如果你有足够的内存,5万或5000万个对象不是问题。如果内存有限,一种选择是将值存储在磁盘上,例如存储卡。每个键可以有一个文件,文件的内容就是值。如果值很小 (< 1 KB),您可以以某种方式组合这些值以减少使用。由于数据是文本,您也可以压缩数据以减少磁盘使用。

您可以保留最近值的缓存。此缓存可以是最后 10 - 1000 个键/值,以便可以快速访问它们,并将其余键/值存储在磁盘上。

如果压缩数据后,它不适合设备的存储,您可能需要将存储移动到服务器并通过网络提取所需的信息。

关于java - 如何在Android Collection中存储25000个对象(HashMap、LinkedHashMap、ArrayList、Map),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14463069/

相关文章:

Android 相机视频为空白,带有白线

java - 如何通过Gson解析单个字段

java - Android Studio 能否自动将布局 XML 文件中的引用提取到 Activity java 文件中?

java - 数组的 Struts2 验证

java - 了解数组的克隆方法

java - 将对象的数组列表返回给 servlet 的 ajax 调用

java - 如何在非主键上使用 hibernate 注释设置单向一对一关系?

java - 对 ArrayList 对象的引用数组

java - 我们如何删除 arrayList 中的多个值?

java - 使用流式 api 遍历字段而不是遍历对象