Javaの正規表現でリストをフィルタリングする
およびjava.util.regex.Pattern
クラスを使用して各要素に正規表現パターンを適用することが含まれます。 これを効率的に、ストリームを使用して最新のJavaで読みやすさとパフォーマンスを向上させます。java.util.regex.Matcher
List<String> strings = Arrays.asList("apple pie", "banana bread", "cherry cake", "apple crumble", "orange juice");
操作は、パターンが文字列内で見つかった場合に
を使用して各文字列にコンパイルされたパターンを適用します。最後に、フィルタリングされた要素を新しいリストに収集します。 このアプローチは、中程度のサイズのリストでは簡潔で効率的です。 非常に大きなリストについては、平行ストリーム(パフォーマンスセクションでカバー)を検討してください。Pattern pattern = Pattern.compile("apple"); // Compile the regex pattern once for efficiency List<String> filteredList = strings.stream() .filter(s -> pattern.matcher(s).find()) .collect(Collectors.toList()); System.out.println(filteredList); // Output: [apple pie, apple crumble]
特定のパターンに合わせて正規表現を使用してJavaリストを効率的にフィルタリングするにはどうすればよいですか? 主な最適化は次のとおりです
filter
[abc]
、*
、
)を使用して、正規表現のパフォーマンスを最適化するために慎重に使用することを検討してください。これにより、より高価なRegexエンジンで処理する必要がある文字列の数を大幅に削減できます。 たとえば、ターゲット文字列が特定の文字から始まることを知っている場合は、regexを適用する前にその文字の予備チェックを追加します。 例外処理のためのベストプラクティスは次のとおりですPatternSyntaxException
(正規表現が無効である場合にスローされる)を防ぐことができます。 この検証には、null値または空の文字列のチェックが含まれる場合があります。try-catch
ブロック(特異性を備えた):PatternSyntaxException
try-catch
が最も一般的な例外ですが、Acatch (Exception e)
ブロックを使用して潜在的な例外を処理することを検討してください。 汎用PatternSyntaxException
の代わりに、特定の例外タイプ(List<String> strings = Arrays.asList("apple pie", "banana bread", "cherry cake", "apple crumble", "orange juice");
リストを介した反復の線形性は、非常に大きなデータセットのボトルネックになる可能性があります。 よりシンプルでターゲットを絞った表現は重要です。
.parallel()
.filter()
List<String> strings = Arrays.asList("apple pie", "banana bread", "cherry cake", "apple crumble", "orange juice");
String.contains()
代替アルゴリズム(可能であれば):以上がJavaの正規表現でリストをフィルタリングしますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。