gpt4 book ai didi

java - 将数组列表中的文本附加到字符串需要花费大量时间

转载 作者:行者123 更新时间:2023-12-01 23:04:42 25 4
gpt4 key购买 nike

我正在阅读一个简单的记事本文本文件,其中包含大量数据,实际上大小为 3MB,因此您可以想象它可以包含多少字数!问题是我正在将此文件读入一个字符串,然后拆分该字符串,以便我可以将每个单词保存在 ArrayList(String) 中。它对我来说工作得很好,但实际的问题是我出于某种目的处理这个数组列表,然后我必须再次追加,或者你可以说将数组列表的所有单词放回字符串!

<小时/>

因此步骤是:

  1. 我将文本文件读入字符串(alltext)
  2. 将所有单词拆分到数组列表中
  3. 处理该数组列表(假设我删除了所有停用词,例如 is、am、are)
  4. 处理数组列表后,我想将数组列表的所有单词放回字符串(alltext)
  5. 然后我必须使用该字符串(alltext)(alltext是所有处理后必须包含文本的字符串)

问题是在第 4 步将所有单词附加到字符串中需要花费很多时间,我的代码是:

<小时/>
BufferedReader br = new BufferedReader(new FileReader(file));
String line = "";
while ((line = br.readLine()) != null) {
alltext += line.trim().replaceAll("\\s+", " ") + " ";
}
br.close();

//Adding All elements from all text to temp list
ArrayList<String> tempList = new ArrayList<String>();
String[] array = alltext.split(" ");
for (String a : array) {
tempList.add(a);
}

//remove stop words here from the temp list

//Adding File Words from List in One String
alltext = "";

for (String removed1 : tempList) {
System.out.println("appending the text");
alltext += removed1.toLowerCase() + " ";
//here it is taking a lot of time suppose 5-10 minutes for a simple text file of even 1.4mb
}
<小时/>

所以我只是想要任何想法,以便我可以减少高效处理的时间并放松机器!我将感谢任何建议和想法......谢谢

最佳答案

使用StringBuffer而不是String

String 是不可变的,因此每次追加时都会创建一个新对象,随着字符串变得越来越长,这会花费越来越多的时间。 StringBuffer 是可变的,专为像您这样的情况而设计。

关于java - 将数组列表中的文本附加到字符串需要花费大量时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22987988/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com