1

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

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

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

([保存]打开文件,打开对象流,写入对象,关闭)([恢复]打开文件。从文件中打开对象流。读取对象到流。转换对象,关闭流和文件。)

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

4

2 回答 2

2

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

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

于 2012-12-03T02:35:11.390 回答
0

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

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

于 2012-12-03T02:51:00.700 回答