目前,我正在从文本文件中刮出一大块数据(段落/字符串)并将其写入新文件。但是,我计划稍后添加一些条件,因此希望能够取出这块数据并将其仅存储在临时数组中,然后在满足条件时写入文件。但是,我不确定如何在事先不知道数组大小的情况下将其写入数组。
有没有人有任何想法?
目前,我正在从文本文件中刮出一大块数据(段落/字符串)并将其写入新文件。但是,我计划稍后添加一些条件,因此希望能够取出这块数据并将其仅存储在临时数组中,然后在满足条件时写入文件。但是,我不确定如何在事先不知道数组大小的情况下将其写入数组。
有没有人有任何想法?
不要使用数组。使用可以动态增长的 String 类型的集合,例如ArrayList。以下是一些快速代码示例:示例 1、示例 2
Java 文档中关于 ArrayList 内存管理的一些注释:
容量是用于存储列表中元素的数组的大小。它总是至少与列表大小一样大。随着元素被添加到 ArrayList,它的容量会自动增长。除了添加一个元素具有恒定的摊销时间成本这一事实之外,没有指定增长策略的细节。
应用程序可以在使用 ensureCapacity 操作添加大量元素之前增加 ArrayList 实例的容量。这可以减少增量重新分配的数量。
请注意,即使是文档也没有具体说明内部管理的方式。
在 Java 中,一个ArrayList
(或任何其他类型的 Java 集合)可以为您处理所有内存管理:
ArrayList<String> strings = new ArrayList<String>();
如果要添加字符串:
strings.add("New String");
如果要获取某个索引处的字符串(在本例中为索引 1):
strings.get(1);
ArrayList类中还有很多方法。
您确实需要一个动态增长的集合。ArrayList
是第一个想到的;在内部,它与常规数组非常相似,因此如果需要,它可以提供快速随机访问。LinkedList
如果您无法估计最终需要的元素数量,则可能更适合,前提是您只需要顺序访问其元素(可以使用随机访问,但速度不会很快)。