在我目前正在处理的程序中,有一个部分需要花费一些时间。基本上,我有一个字符串列表和一个目标短语。例如,假设目标短语是“成品库存”。现在,在过滤掉停用词 (of) 后,我想从列表中提取包含以下三个词之一的所有字符串:“库存”、“完成”和“商品”。现在,我将这个想法实现如下:
String[] targetWords; // contains "inventory", "finished", and "goods"
ArrayList<String> extractedStrings = new ArrayList<String>();
for (int i = 0; i < listOfWords.size(); i++) {
String[] words = listOfWords.get(i).split(" ");
outerloop:
for (int j = 0; j < words.length; j++) {
for (int k = 0; k < targetWords.length; k++) {
if (words[j].equalsIgnoreCase(targetWords[k])) {
extractedStrings.add(listOfWords.get(i));
break outerloop;
}
}
}
}
该列表包含超过 10 万个单词,因此完成每个目标短语的任务大约需要 0.4 到 0.8 秒。问题是,我有很多这样的目标短语要处理,而且秒数真的加起来了。因此,我想知道是否有人知道完成此任务的更有效方法?我在这里先向您的帮助表示感谢!