你的代码中存在一些效率低下的问题,但是在一天结束的时候,如果你必须搜索包含单词的句子,那么就无法摆脱循环.
也就是说,有几件事要尝试.
首先,使WORDS成为HashSet,contains方法将远远快于ArrayList,因为它正在进行哈希查找以获取值.
其次,切换逻辑有点像这样:
Iterator sentenceIterator = SENTENCES.iterator();
sentenceLoop:
while (sentenceIterator.hasNext())
{
String sentence = sentenceIterator.next();
for (String word : sentence.replaceAll("\\p{P}"," ").toLowerCase().split("\\s+"))
{
if (WORDS.contains(word))
{
sentenceIterator.remove();
continue sentenceLoop;
}
}
}
这段代码(假设你试图删除包含某些单词的句子)使用迭代器并避免使用原始代码中的字符串连接和解析逻辑(用一个正则表达式代替它),这两者都应该更快.
但请记住,就像所有表现一样,你需要测试这些变化,看看它们能改善这种情况.