【问题标题】:Java Can I restore a 2 dimensional array from file without knowing its size?Java 我可以在不知道其大小的情况下从文件中恢复二维数组吗?
【发布时间】:2012-12-03 02:27:31
【问题描述】:

或者有什么方法可以在不知道其大小的情况下将通用对象(最初是 2Darray)转换为 2d Array?

我有一个程序,用户输入数据并将数据提交到 2D 数组中,该数组的大小取决于用户输入的数量。我使用从本教程中学到的知识将数组作为对象保存到文件中。

http://beginwithjava.blogspot.com/2011/04/java-file-save-and-file-load-objects.html

([保存]打开文件,打开对象流,写入对象,关闭) ([恢复]打开一个文件。从文件中打开一个对象流。读取对象流。 投射对象,关闭流和文件。)

但是,由于我不知道 2d 数组会有多大,所以我不知道在恢复时如何将对象转换回 2dArray。

【问题讨论】:

    标签: java arrays casting restore multidimensional-array


    【解决方案1】:

    没有办法在读取之前知道大小,所以最常见的解决方案是在保存数据之前先保存大小。读取器读取大小,分配足够的内存,然后以常规方式继续读取数据。

    另一种不太常见的方法是在文件中保存标记以指示每行数据的结束位置。在某种程度上,这类似于在 C 中以空值终止字符串,其中字符串的长度没有显式存储,但每次都必须重新计算。这种方法的缺点是不允许预分配。换句话说,您要么需要分配足够的内存来容纳任何合法大小的数据,要么随时动态地重新分配。

    【讨论】:

      【解决方案2】:

      javas ArrayList 会根据需要自动增长,如果您处于元素数量未知的不幸情况,它会很有用。 读取文件后,您可以将这些数组列表转换为数组。

      但更好的方法是将大小存储在文件的开头。

      【讨论】:

        猜你喜欢
        • 2019-04-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-03-09
        • 2020-06-20
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多