私が現在取り組んでいるプログラムでは、少し時間がかかっている部分が 1 つあります。基本的に、文字列のリストと 1 つのターゲット フレーズがあります。例として、対象フレーズが「完成品の在庫」であるとします。ここで、ストップ ワード (of) をフィルターで除外した後、"inventory"、"finished"、"goods" の 3 つの単語のいずれかを含むすべての文字列をリストから抽出したいと考えています。今、私は次のようにアイデアを実装しました:
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 秒かかります。問題は、処理するこれらのターゲット フレーズがたくさんあるということです。したがって、このタスクを完了するためのより効率的な方法を誰かが知っているかどうか疑問に思っていましたか? 事前に助けてくれてありがとう!