Prädikate aus java.util.regex.Pattern
Die Pattern-Methoden asPredicate() und asMatchPredicate() (ab Java 11) liefern ein Predicate<String>, sodass ein regulärer Ausdruck als Kriterium, zum Beispiel zum Filtern oder Löschen von Einträgen in Datenstrukturen, genutzt werden kann.
Es unterscheiden sich die Methoden wie folgt:
MethodeImplementierungPredicate<String> asPredicate()return s -> matcher(s).find()Predicate<String> asMatchPredicate()return s -> matcher(s).matches();
asPredicate() matcht bei einem Teilstring, asMatchPredicate() den gesamten String
Beispiel: Lösche aus einer Liste alle Strings, die leer sind oder Zahlen enthalten:
List list = new ArrayList( Arrays.asList( "", "69cool", "1898", "Sisi" ) );
list.removeIf( Pattern.compile( "\\d+" ).asPredicate().or( String::isEmpty ) );
System.out.println( list ); // [Sisi]
Ändern wir asPredicate() in asMatchPredicate() ist die Ausgabe [69cool, Sisi].