最好的方法在java中保存数据2D数组

时间:2017-10-25 07:48:16

标签: java arrays memory filesize

我有一个关于将2d数组的值保存到hardisk的问题。我建立5000x5000项目相似性表(浮动),我想存储它,因为它将继续使用。我已经尝试通过格式index1,index2,value + \ n将它们保存到.txt文件中,它们的大小增加到250MB(大约2500万行)。有什么方法可以减小它的尺寸吗? 如果有人介意帮助我,我会很高兴

4 个答案:

答案 0 :(得分:0)

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

  2. 我们可以使用Float.floatToIntBits(float)方法将IEEE-754表示形式作为整数,并将整数序列化为4个字节

  3. ,而不是写入float的字符串值。

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

答案 1 :(得分:0)

您可以使用

Map<Float, List<Float>>

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

答案 2 :(得分:0)

如果数组稀疏填充,您可以考虑仅保存实际具有值的数据点。然后由x / y坐标键入的Map可以大大减小尺寸。

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

答案 3 :(得分:0)

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