Überprüfung von Stream-Elementen Anhand Einer Bedingung Mit allMatch()
Beim Arbeiten mit Datenströmen besteht häufig die Notwendigkeit zu überprüfen, ob Elemente bestimmte Bedingungen erfüllen. Beispielsweise kann es erforderlich sein zu prüfen, ob alle Artikel im Warenkorb vorrätig sind, ob mindestens ein Artikel reduziert ist oder ob es keine stornierten Bestellungen gibt.
Für diese Anwendungsfälle stellt die Stream API drei nützliche Methoden bereit: allMatch(), anyMatch() und noneMatch(). Mit diesen Methoden lässt sich schnell feststellen, ob Stream-Elemente ein bestimmtes Prädikat erfüllen.
allMatch()-Methode
Die Methode allMatch() prüft, ob alle Elemente in einem Stream ein angegebenes Prädikat erfüllen. Falls mindestens ein Element die Bedingung nicht erfüllt, gibt die Methode false zurück.
boolean allMatch(Predicate<? super T> predicate)
Diese Methode nimmt ein Prädikat—eine Funktion, die einen boolean zurückgibt—und wendet es auf jedes Element im Stream an. Wenn alle Elemente die Bedingung erfüllen, gibt sie true zurück; andernfalls gibt sie false zurück.
Praktisches Beispiel
In einem Online-Shop ist der Versand kostenlos, wenn alle Artikel im Warenkorb mehr als $10 kosten. Es muss geprüft werden, ob der kostenlose Versand für die aktuelle Bestellung gilt.
Main.java
1234567891011121314151617package com.example; import java.util.List; public class Main { public static void main(String[] args) { List<Integer> prices = List.of(15, 20, 12, 9); // Item prices boolean freeShipping = prices.stream().allMatch(price -> price > 10); if (freeShipping) { System.out.println("Free shipping applied."); } else { System.out.println("Not all items qualify for free shipping."); } } }
In diesem Code wird eine Liste von Artikelpreisen erstellt: [15, 20, 12, 9]. Die Methode allMatch(price -> price > 10) prüft, ob alle Artikel mehr als $10 kosten. Ist dies der Fall, wird eine Meldung über den erfolgreichen kostenlosen Versand angezeigt; andernfalls erscheint eine Meldung, dass nicht alle Artikel die Voraussetzungen erfüllen.
anyMatch()-Methode
Die Methode anyMatch() prüft, ob mindestens ein Element in einem Stream ein bestimmtes Prädikat erfüllt. Wenn mindestens ein Element die Bedingung erfüllt, gibt die Methode true zurück und beendet die Verarbeitung.
boolean anyMatch(Predicate<? super T> predicate)
Diese Methode nimmt ein Prädikat entgegen und wendet es auf jedes Element im Stream an. Sobald ein passendes Element gefunden wird, gibt sie true zurück und beendet die Ausführung.
Praktisches Beispiel
Ein Online-Shop bietet ein VIP-Programm an, wenn sich mindestens ein Artikel im Warenkorb befindet, der mehr als $500 kostet. Es muss geprüft werden, ob der Kunde für den VIP-Status qualifiziert ist.
Main.java
1234567891011121314151617package com.example; import java.util.List; public class Main { public static void main(String[] args) { List<Integer> prices = List.of(530, 300, 40, 120); // Item prices boolean hasExpensiveItem = prices.stream().anyMatch(price -> price > 500); if (hasExpensiveItem) { System.out.println("Customer qualifies for VIP status."); } else { System.out.println("No expensive items in the cart."); } } }
Hier prüft die Methode anyMatch(price -> price > 500), ob es mindestens einen Artikel mit einem Preis über $500 gibt. Wird ein solcher Artikel gefunden, wird hasExpensiveItem auf true gesetzt und eine Nachricht über die Qualifikation für den VIP-Status ausgegeben; andernfalls erscheint eine Nachricht, dass sich keine teuren Artikel im Warenkorb befinden.
noneMatch()-Methode
Die Methode noneMatch() prüft, ob kein Element in einem Stream ein bestimmtes Prädikat erfüllt. Wenn kein Element die Bedingung erfüllt, gibt die Methode true zurück.
boolean noneMatch(Predicate<? super T> predicate)
Diese Methode nimmt ein Prädikat und wendet es auf jedes Element im Stream an. Wenn kein Element die Bedingung erfüllt, gibt sie true zurück; andernfalls gibt sie false zurück.
Praktisches Beispiel
Ein Online-Shop erlaubt keine Artikel mit einem Preis unter null. Es muss überprüft werden, ob sich solche Artikel im Warenkorb befinden.
Main.java
1234567891011121314151617package com.example; import java.util.List; public class Main { public static void main(String[] args) { List<Integer> prices = List.of(1500, 2000, 3000, 0); // Item prices boolean noFreeItems = prices.stream().noneMatch(price -> price < 0); if (noFreeItems) { System.out.println("All items have valid prices."); } else { System.out.println("The cart contains an item with a zero price."); } } }
In diesem Beispiel prüft noneMatch(price -> price < 0), ob keine Artikel einen Preis unter $0 haben. Wenn alle Artikel einen gültigen Preis besitzen, wird eine Bestätigungsmeldung ausgegeben; andernfalls erscheint eine Meldung, die auf das Vorhandensein eines Artikels mit einem ungültigen Preis hinweist.
1. Welche Methode prüft, ob mindestens ein Element im Stream eine Bedingung erfüllt?
2. Welche Methode sollte verwendet werden, um sicherzustellen, dass keine Werte kleiner als Null in einer Liste vorhanden sind?
Danke für Ihr Feedback!
Fragen Sie AI
Fragen Sie AI
Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen
Can you provide code examples for each of these methods?
What are some common use cases for allMatch(), anyMatch(), and noneMatch()?
How do these methods improve performance compared to manual iteration?
Awesome!
Completion rate improved to 2.33
Überprüfung von Stream-Elementen Anhand Einer Bedingung Mit allMatch()
Swipe um das Menü anzuzeigen
Beim Arbeiten mit Datenströmen besteht häufig die Notwendigkeit zu überprüfen, ob Elemente bestimmte Bedingungen erfüllen. Beispielsweise kann es erforderlich sein zu prüfen, ob alle Artikel im Warenkorb vorrätig sind, ob mindestens ein Artikel reduziert ist oder ob es keine stornierten Bestellungen gibt.
Für diese Anwendungsfälle stellt die Stream API drei nützliche Methoden bereit: allMatch(), anyMatch() und noneMatch(). Mit diesen Methoden lässt sich schnell feststellen, ob Stream-Elemente ein bestimmtes Prädikat erfüllen.
allMatch()-Methode
Die Methode allMatch() prüft, ob alle Elemente in einem Stream ein angegebenes Prädikat erfüllen. Falls mindestens ein Element die Bedingung nicht erfüllt, gibt die Methode false zurück.
boolean allMatch(Predicate<? super T> predicate)
Diese Methode nimmt ein Prädikat—eine Funktion, die einen boolean zurückgibt—und wendet es auf jedes Element im Stream an. Wenn alle Elemente die Bedingung erfüllen, gibt sie true zurück; andernfalls gibt sie false zurück.
Praktisches Beispiel
In einem Online-Shop ist der Versand kostenlos, wenn alle Artikel im Warenkorb mehr als $10 kosten. Es muss geprüft werden, ob der kostenlose Versand für die aktuelle Bestellung gilt.
Main.java
1234567891011121314151617package com.example; import java.util.List; public class Main { public static void main(String[] args) { List<Integer> prices = List.of(15, 20, 12, 9); // Item prices boolean freeShipping = prices.stream().allMatch(price -> price > 10); if (freeShipping) { System.out.println("Free shipping applied."); } else { System.out.println("Not all items qualify for free shipping."); } } }
In diesem Code wird eine Liste von Artikelpreisen erstellt: [15, 20, 12, 9]. Die Methode allMatch(price -> price > 10) prüft, ob alle Artikel mehr als $10 kosten. Ist dies der Fall, wird eine Meldung über den erfolgreichen kostenlosen Versand angezeigt; andernfalls erscheint eine Meldung, dass nicht alle Artikel die Voraussetzungen erfüllen.
anyMatch()-Methode
Die Methode anyMatch() prüft, ob mindestens ein Element in einem Stream ein bestimmtes Prädikat erfüllt. Wenn mindestens ein Element die Bedingung erfüllt, gibt die Methode true zurück und beendet die Verarbeitung.
boolean anyMatch(Predicate<? super T> predicate)
Diese Methode nimmt ein Prädikat entgegen und wendet es auf jedes Element im Stream an. Sobald ein passendes Element gefunden wird, gibt sie true zurück und beendet die Ausführung.
Praktisches Beispiel
Ein Online-Shop bietet ein VIP-Programm an, wenn sich mindestens ein Artikel im Warenkorb befindet, der mehr als $500 kostet. Es muss geprüft werden, ob der Kunde für den VIP-Status qualifiziert ist.
Main.java
1234567891011121314151617package com.example; import java.util.List; public class Main { public static void main(String[] args) { List<Integer> prices = List.of(530, 300, 40, 120); // Item prices boolean hasExpensiveItem = prices.stream().anyMatch(price -> price > 500); if (hasExpensiveItem) { System.out.println("Customer qualifies for VIP status."); } else { System.out.println("No expensive items in the cart."); } } }
Hier prüft die Methode anyMatch(price -> price > 500), ob es mindestens einen Artikel mit einem Preis über $500 gibt. Wird ein solcher Artikel gefunden, wird hasExpensiveItem auf true gesetzt und eine Nachricht über die Qualifikation für den VIP-Status ausgegeben; andernfalls erscheint eine Nachricht, dass sich keine teuren Artikel im Warenkorb befinden.
noneMatch()-Methode
Die Methode noneMatch() prüft, ob kein Element in einem Stream ein bestimmtes Prädikat erfüllt. Wenn kein Element die Bedingung erfüllt, gibt die Methode true zurück.
boolean noneMatch(Predicate<? super T> predicate)
Diese Methode nimmt ein Prädikat und wendet es auf jedes Element im Stream an. Wenn kein Element die Bedingung erfüllt, gibt sie true zurück; andernfalls gibt sie false zurück.
Praktisches Beispiel
Ein Online-Shop erlaubt keine Artikel mit einem Preis unter null. Es muss überprüft werden, ob sich solche Artikel im Warenkorb befinden.
Main.java
1234567891011121314151617package com.example; import java.util.List; public class Main { public static void main(String[] args) { List<Integer> prices = List.of(1500, 2000, 3000, 0); // Item prices boolean noFreeItems = prices.stream().noneMatch(price -> price < 0); if (noFreeItems) { System.out.println("All items have valid prices."); } else { System.out.println("The cart contains an item with a zero price."); } } }
In diesem Beispiel prüft noneMatch(price -> price < 0), ob keine Artikel einen Preis unter $0 haben. Wenn alle Artikel einen gültigen Preis besitzen, wird eine Bestätigungsmeldung ausgegeben; andernfalls erscheint eine Meldung, die auf das Vorhandensein eines Artikels mit einem ungültigen Preis hinweist.
1. Welche Methode prüft, ob mindestens ein Element im Stream eine Bedingung erfüllt?
2. Welche Methode sollte verwendet werden, um sicherzustellen, dass keine Werte kleiner als Null in einer Liste vorhanden sind?
Danke für Ihr Feedback!