Java我可以从文件中恢复二维数组而不知道其大小吗?

Java我可以从文件中恢复二维数组而不知道其大小吗?,java,arrays,casting,restore,multidimensional-array,Java,Arrays,Casting,Restore,Multidimensional Array,或者,是否有任何方法可以在不知道其大小的情况下将常规对象(最初是2Darray)强制转换为2d数组 我有一个程序,用户输入数据,然后将数据提交到一个2D数组中,该数组的大小取决于用户输入的数据量。我使用从本教程中学到的知识将数组保存为对象以归档 ([保存]打开文件、打开对象流、写入对象、关闭) ([还原]打开文件。从文件中打开对象流。将对象读取到流。 强制转换对象,关闭流和文件。) 但是,由于我不知道2d数组有多大,所以我不知道在恢复时如何将对象转换回2d数组。在读取之前无法知道大小,因此最常

或者,是否有任何方法可以在不知道其大小的情况下将常规对象(最初是2Darray)强制转换为2d数组

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

([保存]打开文件、打开对象流、写入对象、关闭) ([还原]打开文件。从文件中打开对象流。将对象读取到流。 强制转换对象,关闭流和文件。)


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

在读取之前无法知道大小,因此最常见的解决方案是在保存数据之前保存大小。读取器读取大小,分配足够的内存,并以常规方式读取数据


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

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

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