これは別の解決策であり、最良またはより効率的ではないかもしれませんが、機能し、このライブラリの力を示しています。そのため、lambdaj (ここからダウンロード- Web サイト) と hamcrest (ここからダウンロード- Webサイト) を使用できます。これらのライブラリは、コレクションを管理するのに非常に強力です。次のコードは非常にシンプルで、完全に機能します。
import static ch.lambdaj.Lambda.having;
import static ch.lambdaj.Lambda.on;
import static ch.lambdaj.Lambda.select;
import static org.hamcrest.Matchers.stringContainsInOrder;
import java.util.Arrays;
import java.util.List;
public class StringContains_03{
public static void main(String[] args) {
List<String> source = Arrays.asList("This time only $FB,$RUG is highest priority".split(" "));
List<String> patterns = Arrays.asList("$FB","$F");
boolean patternsExistsInSource = select(source, having(on(String.class), stringContainsInOrder(patterns))).size()>0;
System.out.println(patternsExistsInSource);//shows: true
System.out.println(select(source, having(on(String.class), stringContainsInOrder(patterns))));//shows the matches: [$FB,$RUG]
}
}
パターンが別のものにあるかどうかは、この行だけでわかることに注意してください。
boolean patternsExistsInSource = select(source, having(on(String.class), stringContainsInOrder(patterns))).size()>0;
このライブラリを使用すると、問題を 1 行で解決できます。プロジェクトにhamcrest-all-1.3.jarおよびlambdaj-2.4.jarを追加する必要があります。
注:これは、コードに代わるものがあると仮定するのに役立ちます。これが役立つことを願っています。
(編集済み) "今回は $FB,$RUG のみが最優先"の場合にも機能するようになりました。