HashMap替代方案可实现内存高效的数据存储

我目前有一个电子表格类型程序,该程序将其数据保存在HashMaps的ArrayList中。当我告诉您这还不理想时,您无疑会感到震惊。开销似乎使用的内存比数据本身多5倍。

这个问题询问有效的馆藏库,答案是使用Google馆藏。 我的跟进是“

。我一直在阅读文档,但感觉不像是哪种类最适合。(我也向其他图书馆或建议开放)。

因此,我正在寻找可以使我以最小的内存开销存储密集电子表格类型数据的东西。

  • 我的列当前由字段对象引用,行由它们的索引引用,值是对象,几乎总是字符串
  • 有些列会有很多重复的值
  • 主要操作是根据某些字段的值更新或删除记录,以及添加/删除/合并列

我知道像H2和Derby这样的选项,但是在这种情况下,我不打算使用嵌入式数据库。

:如果您建议使用库,那么如果您能将我指向其中一个或两个适用于此的特定类,我也将不胜感激。尽管Sun的文档通常包含有关哪些操作是O(1),哪些操作是O(N)等的信息,但我在第三方库中看不到很多操作,也没有任何关于哪种类最适合什么的描述。

回答:

因此,我假设您具有的地图Map<ColumnName,Column>,其中该列实际上是类似的ArrayList<Object>

一些可能性-

  • 您完全确定内存是个问题吗?如果您通常只是担心大小,那么值得确认这确实是正在运行的程序中的一个问题。它需要大量的行和映射来填充JVM。

  • 您可以使用集合中不同类型的地图测试数据集。根据您的数据,您还可以使用可能有用的预设大小/负载系数组合来初始化地图。过去我一直在搞弄,如果幸运的话,您的内存可能会减少30%。

  • 将数据存储在单个矩阵状的数据结构(现有的库实现或类似列表列表的包装器)中,并且具有将列键映射到矩阵列的单个映射,该怎么办?

以上是 HashMap替代方案可实现内存高效的数据存储 的全部内容, 来源链接: utcz.com/qa/406866.html

回到顶部