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:
Methode | Implementierung |
Predicate<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<String> 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].