ArrayList<String[]> writtenClasses = new ArrayList<String[]>();
// usually there is functional code here that populates
// ArrayList<String[]> writtenClasses with variably 3000
// String[] objects always of exactly 8 lines each
ArrayList<String> processedClasses = new ArrayList<String>();
for(String[] classLines: writtenClasses)
{
for(String classLine: classLines)
{
processedClasses.add(classLine);
}
}
String result = "";
for(String fileLine: processedClasses)
{
result += fileLine + "\n";
}
这是我的代码。它可以正常工作并产生我想要的结果,但速度很慢。每写入一个ArrayList项需要大约10毫秒,当处理更大的任务时就有些慢了。我怀疑与ArrayList有关的某些问题正在导致速度缓慢,但在每次运行后对作业统计进行计时和控制台输出后却没有找到明显的问题。
上述代码是早期代码的改编,旨在提高效率。它比以前的方法提高了约4%。下面是我使用的旧方法,比上面稍微慢一点。
for(String[] classLines: writtenClasses)
{
for(String classLine: classLines)
{
result += classLine + "\n";
}
writtenClasses.set(writtenClasses.indexOf(classLines), null);
}
我之所以使用 writtenClasses.set(writtenClasses.indexOf(classLines), null);
,仅是出于内存效率的目的,并且我的统计数据显示它在使用更高效的内存时,CPU开销是无法检测到的。
这是我在StackOverflow上的第二个问题,我已尽力遵守规则,但如果我的提问有误或者在某些方面不小心冒犯了他人,请指出来,我会加以改正。 :)