gpt4 book ai didi

java - 更快的字符串匹配/迭代方法?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:59:11 25 4
gpt4 key购买 nike

在我目前正在处理的程序中,有一个部分花费的时间有点长。基本上,我有一个字符串列表和一个目标短语。例如,假设目标短语是“inventory of finished goods”。现在,在过滤掉停用词 (of) 之后,我想从包含以下三个词之一的列表中提取所有字符串:“inventory”、“finished”和“goods”。现在,我按如下方式实现了这个想法:

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 秒。问题是,我有很多这样的目标短语要处理,而且时间真的很长。因此,我想知道是否有人知道完成此任务的更有效方法?提前感谢您的帮助!

最佳答案

您的 100k 单词列表可以添加(一次)到 HashSet。与其遍历列表,不如使用 wordSet.contains() - HashSet 为此提供恒定时间性能,因此不受列表大小的影响。

关于java - 更快的字符串匹配/迭代方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18138366/

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