用于内存高效数据存储的哈希图替代方案

2022-09-01 13:17:24

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

这个问题问的是高效的馆藏库,答案是使用Google馆藏。我的后续是“哪一部分?”。我一直在阅读文档,但不觉得它能很好地了解哪些类适合于此。(我也对其他库或建议持开放态度)。

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

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

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

编辑:如果你建议库,如果你能指出我一两个特定的类在这里适用,我也会很感激。虽然Sun的文档通常包括有关哪些操作是O(1),哪些是O(N)等的信息,但我在第三方库中没有看到太多这样的信息,也没有真正描述哪些类最适合什么。


答案 1

某些列将具有大量重复值

立即向我建议可能使用FlyWeight模式,无论您为产品系列选择哪种解决方案。


答案 2

Trove集合应该特别关注占用的空间(如果你坚持使用基元类型,我认为它们也有定制的数据结构)。看看这里

否则,您可以尝试使用Apache集合。只是做你的基准测试!

无论如何,如果你对相同的元素有很多参考,试着设计一些合适的模式(比如flyweight)。)