Vérification des Éléments du Flux Selon une Condition avec allMatch()
Lors de la manipulation de flux de données, il est souvent nécessaire de vérifier si les éléments respectent certaines conditions. Par exemple, il peut être utile de s'assurer que tous les articles d'un panier d'achat sont en stock, qu'au moins un article est en promotion, ou qu'il n'y a aucune commande annulée.
Pour traiter ces cas, la Stream API propose trois méthodes utiles : allMatch(), anyMatch() et noneMatch(). Ces méthodes permettent de vérifier rapidement si les éléments d'un flux satisfont un prédicat donné.
Méthode allMatch()
La méthode allMatch() vérifie si tous les éléments d'un flux satisfont un prédicat donné. Si au moins un élément ne respecte pas la condition, la méthode retourne false.
boolean allMatch(Predicate<? super T> predicate)
Cette méthode prend un prédicat—une fonction qui retourne un booléen—et l'applique à chaque élément du flux. Si tous les éléments satisfont la condition, elle retourne true ; sinon, elle retourne false.
Exemple pratique
Dans une boutique en ligne, la livraison gratuite est disponible si tous les articles du panier coûtent plus de $10. Il est nécessaire de vérifier si la livraison gratuite s'applique à la commande en cours.
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."); } } }
Dans ce code, une liste de prix d'articles est créée : [15, 20, 12, 9]. La méthode allMatch(price -> price > 10) vérifie si tous les articles coûtent plus de 10 $. Si c'est le cas, un message concernant la livraison gratuite est affiché ; sinon, un message indiquant que tous les articles ne sont pas éligibles apparaît.
Méthode anyMatch()
La méthode anyMatch() vérifie si au moins un élément d'un flux satisfait un prédicat donné. Si au moins un élément répond à la condition, la méthode retourne true et arrête le traitement.
boolean anyMatch(Predicate<? super T> predicate)
Cette méthode prend un prédicat et l'applique à chaque élément du flux. Dès qu'elle trouve un élément correspondant, elle retourne true et arrête l'exécution.
Exemple pratique
Une boutique en ligne propose un programme VIP si au moins un article dans le panier coûte plus de $500. Il est nécessaire de vérifier si le client est éligible au statut VIP.
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."); } } }
Ici, la méthode anyMatch(price -> price > 500) vérifie s'il existe au moins un article dont le prix dépasse 500 $. Si c'est le cas, hasExpensiveItem devient true et un message concernant l'obtention du statut VIP est affiché ; sinon, un message indiquant l'absence d'articles coûteux dans le panier apparaît.
Méthode noneMatch()
La méthode noneMatch() vérifie qu'aucun des éléments d'un flux ne satisfait un prédicat donné. Si aucun élément ne correspond à la condition, la méthode retourne true.
boolean noneMatch(Predicate<? super T> predicate)
Cette méthode prend un prédicat et l'applique à chaque élément du flux. Si aucun élément ne satisfait la condition, elle renvoie true ; sinon, elle renvoie false.
Exemple pratique
Une boutique en ligne n'autorise pas les articles avec un prix inférieur à zéro. Il est nécessaire de vérifier s'il existe de tels articles dans le panier.
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."); } } }
Dans cet exemple, noneMatch(price -> price < 0) vérifie qu'il n'existe aucun article dont le prix est inférieur à $0. Si tous les articles possèdent un prix valide, un message de confirmation s'affiche ; sinon, un message signale la présence d'un article avec un prix invalide.
1. Quelle méthode vérifie si au moins un élément du flux satisfait une condition ?
2. Quelle méthode utiliser pour garantir qu'aucune valeur n'est inférieure à zéro dans une liste ?
Merci pour vos commentaires !
Demandez à l'IA
Demandez à l'IA
Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion
Awesome!
Completion rate improved to 2.33
Vérification des Éléments du Flux Selon une Condition avec allMatch()
Glissez pour afficher le menu
Lors de la manipulation de flux de données, il est souvent nécessaire de vérifier si les éléments respectent certaines conditions. Par exemple, il peut être utile de s'assurer que tous les articles d'un panier d'achat sont en stock, qu'au moins un article est en promotion, ou qu'il n'y a aucune commande annulée.
Pour traiter ces cas, la Stream API propose trois méthodes utiles : allMatch(), anyMatch() et noneMatch(). Ces méthodes permettent de vérifier rapidement si les éléments d'un flux satisfont un prédicat donné.
Méthode allMatch()
La méthode allMatch() vérifie si tous les éléments d'un flux satisfont un prédicat donné. Si au moins un élément ne respecte pas la condition, la méthode retourne false.
boolean allMatch(Predicate<? super T> predicate)
Cette méthode prend un prédicat—une fonction qui retourne un booléen—et l'applique à chaque élément du flux. Si tous les éléments satisfont la condition, elle retourne true ; sinon, elle retourne false.
Exemple pratique
Dans une boutique en ligne, la livraison gratuite est disponible si tous les articles du panier coûtent plus de $10. Il est nécessaire de vérifier si la livraison gratuite s'applique à la commande en cours.
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."); } } }
Dans ce code, une liste de prix d'articles est créée : [15, 20, 12, 9]. La méthode allMatch(price -> price > 10) vérifie si tous les articles coûtent plus de 10 $. Si c'est le cas, un message concernant la livraison gratuite est affiché ; sinon, un message indiquant que tous les articles ne sont pas éligibles apparaît.
Méthode anyMatch()
La méthode anyMatch() vérifie si au moins un élément d'un flux satisfait un prédicat donné. Si au moins un élément répond à la condition, la méthode retourne true et arrête le traitement.
boolean anyMatch(Predicate<? super T> predicate)
Cette méthode prend un prédicat et l'applique à chaque élément du flux. Dès qu'elle trouve un élément correspondant, elle retourne true et arrête l'exécution.
Exemple pratique
Une boutique en ligne propose un programme VIP si au moins un article dans le panier coûte plus de $500. Il est nécessaire de vérifier si le client est éligible au statut VIP.
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."); } } }
Ici, la méthode anyMatch(price -> price > 500) vérifie s'il existe au moins un article dont le prix dépasse 500 $. Si c'est le cas, hasExpensiveItem devient true et un message concernant l'obtention du statut VIP est affiché ; sinon, un message indiquant l'absence d'articles coûteux dans le panier apparaît.
Méthode noneMatch()
La méthode noneMatch() vérifie qu'aucun des éléments d'un flux ne satisfait un prédicat donné. Si aucun élément ne correspond à la condition, la méthode retourne true.
boolean noneMatch(Predicate<? super T> predicate)
Cette méthode prend un prédicat et l'applique à chaque élément du flux. Si aucun élément ne satisfait la condition, elle renvoie true ; sinon, elle renvoie false.
Exemple pratique
Une boutique en ligne n'autorise pas les articles avec un prix inférieur à zéro. Il est nécessaire de vérifier s'il existe de tels articles dans le panier.
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."); } } }
Dans cet exemple, noneMatch(price -> price < 0) vérifie qu'il n'existe aucun article dont le prix est inférieur à $0. Si tous les articles possèdent un prix valide, un message de confirmation s'affiche ; sinon, un message signale la présence d'un article avec un prix invalide.
1. Quelle méthode vérifie si au moins un élément du flux satisfait une condition ?
2. Quelle méthode utiliser pour garantir qu'aucune valeur n'est inférieure à zéro dans une liste ?
Merci pour vos commentaires !