簡體   English   中英

在Java中保存數據二維數組的最佳方法

[英]best way save data 2D array in java

我在保存2d數組的值到hardisk時遇到問題。 我建立了5000x5000項目相似度表(浮動),我想存儲它,因為它將繼續使用。 我試過將它們保存為index1,index2,value + \\ n格式的.txt文件,它們正在增長到250MB的大小(大約2500萬行)。 有什么方法可以減小其尺寸? 如果有人願意幫助我,我會很高興

  1. 代替存儲每個單元格的索引(即index1和index2),我們可以使用2個整數(行數和列數)在文件本身的開頭寫入矩陣的大小。 讀取時使用此信息,以了解何時完全讀取矩陣的一行。

  2. 代替編寫float的字符串值,我們可以使用Float.floatToIntBits(float)方法獲取IEEE-754表示形式的整數並將其序列化為4個字節

這會將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。 我在這里找到了本教程,它按預期工作。 而且還可以節省RAM消耗。 非常感謝你 :)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM