将阵列保存到硬盘

时间:2012-05-01 21:34:41

标签: java arrays

我编写了一个使用200万个整数值数组的程序。但是,它一次只使用200个数组。 我有200辆智能汽车在10000块地形上移动(根据GPS值划分)。每个块都有一个129x28的数组,其中包含整数值。当任何汽车移动到新的块时,它必须检索与该块相关的数组,然后它使用该数组中的值。然后它根据该值做出决定,然后继续前进,依此类推。所以整个系统有200辆汽车和10万辆汽车,而每辆汽车都有自己独特的阵列值,阵列总数为2百万。我需要简单地在一个时隙中检索每个汽车的1个数组=每次200个数组

数组将在应用程序开始时创建并填充零,然后应用程序将开始填充这些数组,最后它将只使用它们。所以我写了一个代码来在程序中创建这些数组。

我不能将数组存储在高清文件中并在需要时检索它们吗?

更新

因为我有200万个阵列而且我无法存储&我在1-1.9秒内检索了200个阵列我将研究降级为使用较少的环境特征,最终使用了200万个大小为7 x 28的阵列,其中使用了7 * 28 * 10 000 * 4(整数)* 200(汽车)字节 如果RAM,它只消耗1.6 GB。如果你遇到类似的问题,祝你好运,如果你处于类似的情况,PM,我希望我能帮助你。

2 个答案:

答案 0 :(得分:4)

您是否考虑过使用database?即使是磁盘上的逗号分隔文本文件(想想Excel)也可以。您的数据来源究竟是什么?

答案 1 :(得分:2)

一个相当简单的解决方案是使用ObjectOutputStream和ObjectInputStream类来编写和读取数组。

以下是将数组写入磁盘的示例代码:

    int [][] array = new int [129] [28];
    // fill in your array here
    ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(fileName));
    out.writeObject(array);
    out.close();

以下是从磁盘读取以前保存的数组的示例代码:

    ObjectInputStream in = new ObjectInputStream(new FileInputStream(fileName));
    int [] [] inArray = (int [] []) in.readObject();
    in.close();