apache-commons には、洗練されたソリューションを提供できる StringUtils というユーティリティ クラスがあることを知っています。
public boolean foo(String[] array, String pattern){
for(String content : array){
if(StringUtils.contains(content, pattern){
return true;
}
}
return false;
}
これについて私が気に入らないことの 1 つは、最初に見つかったインスタンスでのみ true を返すことです。あなたが何をしようとしているのか完全にはわかりませんが、パターンに一致しない配列内のインデックスを気にしない場合は、フィルターと呼ばれる高次関数を使用することをお勧めします。
Guava、lambdaJ、および Apache-Commons は、関数型プログラミングをサポートするライブラリです。
以下は、Apache-Commons で動作するはずの sudo コードです。
List<String> content = Arrays.asList(strArray);
Predicate matchesPattern = new Predicate("asdf"){{
private String pattern;
public Predicate(String pattern){
this.pattern = pattern;
}
@Overload
public boolean evaluate(Object input){
if(input instanceOf String){
StringUtils.contains((String)input, pattern
}
return false;
}
}};
CollectionUtils.filter(content, matchesPattern);
これが行うことは、パターンに一致しない文字列をリストから削除することです。ご覧のとおり、Predicate オブジェクトの宣言は少し冗長です。Apache-Commons または Guava を使用する場合は似たように見えますが、ここで lambdaJ が役に立ちます。
述語は、単一の引数を取り、ブール値を返す関数の単なる用語です。おそらく、Matcher クラスで既に使用されているでしょう。Hamcrest には利用可能な最高の Matcher ライブラリがいくつかあるため、lambdaJ はそれを中心に関数型プログラミング ライブラリを構築しました。使いやすく、非常に読みやすいです。