我有一个关于将2d数组的值保存到hardisk的问题。我建立5000x5000项目相似性表(浮动),我想存储它,因为它将继续使用。我已经尝试通过格式index1,index2,value + \ n将它们保存到.txt文件中,它们的大小增加到250MB(大约2500万行)。有什么方法可以减小它的尺寸吗? 如果有人介意帮助我,我会很高兴
答案 0 :(得分:0)
我们可以使用2个整数(行数和列数)在文件本身的开头写入矩阵的大小,而不是存储每个单元的索引,即index1和index2。在阅读时使用此信息,以了解何时完整读取矩阵的一行。
我们可以使用Float.floatToIntBits(float)
方法将IEEE-754表示形式作为整数,并将整数序列化为4个字节
这会将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)