ループを使用せずに次の式を書き換えるにはどうすればよいですか?
Pattern pattern = Pattern.compile(filterRegEx);
Matcher regexMatcher = pattern.matcher("(.*)");
for (String word : words) {
if (pattern.matcher(word).matches()) {
foundList.add(word);
}
}
ループの使用を避けたい場合は、なんらかの形式の関数型プログラミングを使用する必要があります。Java 8 にはこの分野でいくつかの新機能が追加されますが、現在はGoogle GuavaのCollections2#filter
(または) メソッドを使用できます。Iterables#filter
条件 ( などpattern.matcher(word).matches()
) を指定して、一致するコレクション内の要素を選択できます。
オブジェクトは元のコレクションに「読み通して」返されArrayList(Collection)
たため、フィルター処理されたリストを保持する必要がある場合は、それらのコピーを作成する必要があることに注意してください ( などを使用)。