正如标题所述,我正在尝试从文件中读取未知数量的元素到数组中。最简单的方法(教授希望我们避免使用她没有教过的东西)却有效的方法是什么?
我曾经考虑过要逐个读取和计数文件中的元素,然后在知道要使其大小后创建数组,然后将元素实际存储在其中。但这似乎效率不高。有更好的方法吗?
答案 0 :(得分:3)
只有两种方法可以做到这一点:您建议的方法(先计数,然后读取),创建一个数组并希望它足够好,然后调整大小(如果不是,则调整大小),{{ 1}}会自动为您执行此操作。
哪个更好取决于您受时间还是内存的限制(通常两次读取文件比多次分配数组要慢得多)。
编辑:存在第三种方法,仅当文件中的每个记录具有固定宽度并且文件未压缩(或以任何其他会干扰内容布局的方式编码)时,该方法才可用:文件大小除以记录大小,这恰好是您必须分配的记录数。不幸的是,生活并不总是那么容易。 :)
答案 1 :(得分:0)
您可能还没有提到您的教授是否教过ArrayList
,所以在这种情况下,我肯定会去ArrayList
。 f ArrayList
的唯一目的是处理这种情况。与阵列相比,动态内存之类的功能为ArrayList
提供了一些优势。
您可以先计数,然后相应地创建数组。但这会很慢,为什么要重新发明轮子呢?
因此,您的方法应该是使用ArrayList
读取元素,而只需使用ArrayList.add()
...