或者有没有办法将一个通用对象(最初是一个2Darray)转换为二维数组而不知道它的大小?
我有一个程序,用户输入数据并将数据提交到2D数组中,该数组的大小取决于用户输入的数量。我使用本教程中学到的内容将数组保存为文件对象。
http://beginwithjava.blogspot.com/2011/04/java-file-save-and-file-load-objects.html
([保存]打开文件,打开对象流,写对象,关闭) ([恢复]打开文件。从文件中打开一个对象流。读取要流的对象。 转换对象,关闭流和文件。)
但是,由于我不知道2d数组有多大,我无法弄清楚如何在恢复时将对象强制转换为2dArray。
答案 0 :(得分:2)
在阅读之前无法知道大小,因此最常见的解决方案是在保存数据之前保存大小。读取器读取大小,分配足够的内存,并继续以常规方式读取数据。
另一种不太常见的方法是在文件中保存标记以指示每行数据的结束位置。在某种程度上,这类似于在C中使用null终止字符串,其中字符串的长度未显式存储,但每次都必须重新计算。该方法具有不允许预分配的缺点。换句话说,你需要分配足够的内存来容纳任何合法大小的数据,或者在你去的时候动态地重新分配。
答案 1 :(得分:0)
javas ArrayList会根据需要自动增长,并且如果您处于不幸的情况下不存在元素,那么它是非常有用的。
读取文件后,您可以将这些arraylists转换为数组。
但更好的是将大小存储在文件的开头。