我正在阅读一个简单的记事本文本文件,其中包含大量实际上3mb大小的数据,因此您可以想象它可以拥有的单词数量!问题是我正在将此文件读入字符串然后拆分字符串,以便我可以在ArrayList(String)中保存每个单词。它对我来说很好,但实际的问题是我正在为某些目的处理这个数组列表,然后我必须追加或者你可以说把数组列表的所有单词都放回String!
以便步骤为:
问题在于,在第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
}
所以我只想要任何想法,这样我就可以减少高效处理的时间并放松机器!我会感谢任何建议和想法...... 谢谢
答案 0 :(得分:2)
使用StringBuffer
代替String
。
String
是不可变的,因此每次附加时都会创建一个新的Object,这会使String变得越来越长。 StringBuffer
是可变的,适用于像你这样的案件。
答案 1 :(得分:1)
我会推荐StringBuilder
根据此stringbuilder-and-stringbuffer-in-java,它比StringBuffer
更快,还会检查您是否需要ArrayList
,因为您也可以遍历数组