在 java 中保存数据二维数组的最佳方式

best way save data 2D array in java

我在将二维数组的值保存到硬盘时遇到了问题。我构建了 5000x5000 项目相似度 table(浮动),我想存储它,因为它将继续使用。我试过按 index1、index2、value+\n 格式将它们保存到 .txt 文件,并且它们的大小正在增长到 250MB(大约 2500 万行)。有什么办法可以减小它的尺寸吗? 如果有人愿意帮助我,我会很高兴

  1. 我们可以使用 2 个整数(行数和列数)在文件本身的开头写入矩阵的大小,而不是存储每个单元格的索引,即 index1 和 index2。读取时使用此信息,了解何时完全读取矩阵的一行。

  2. 我们可以使用Float.floatToIntBits(float)方法将IEEE-754表示形式获取为一个整数,并将该整数序列化为4个字节,而不是写入float的字符串值

这会将 5000 x 5000 矩阵的大小减少到约 100MB

您可以使用

Map<Float, List<Float>>

类型

正如@Satish 所说,它至少需要 5000*5000*4(浮点类型的字节数)= 100,000,000 字节或 100000 KB 或 100 MB。

数组是稀疏的,可以考虑只保存实际有值的数据点。然后由 x/y 坐标键入的 Map 可以大大减小大小。

否则,处理 100-250 MB 的文件可能有点费力。为什么不使用某种数据库持久性?有很多 SQL 或没有 SQL 的数据库可以为您优化存储操作。

最后我尝试使用 ObjectOutputStream 以二进制格式存储它们,然后文件减小到 100mb。我找到了这个教程 here,它按我预期的那样工作。它还可以节省 RAM 消耗。非常感谢:)