Stream-Elementen Controleren op een Voorwaarde met allMatch()
Veeg om het menu te tonen
Bij het werken met datastromen is het vaak nodig om te controleren of elementen aan bepaalde voorwaarden voldoen. Bijvoorbeeld, u wilt misschien verifiëren dat alle items in een winkelwagen op voorraad zijn, dat er ten minste één item is met korting, of dat er geen geannuleerde bestellingen zijn.
Om deze gevallen te behandelen, biedt de Stream API drie nuttige methoden: allMatch(), anyMatch() en noneMatch(). Met deze methoden kunt u snel controleren of elementen in een stream voldoen aan een bepaalde predicaat.
allMatch() Methode
De methode allMatch() controleert of alle elementen in een stream voldoen aan een opgegeven predicaat. Als ten minste één element niet aan de voorwaarde voldoet, retourneert de methode false.
boolean allMatch(Predicate<? super T> predicate)
Deze methode neemt een predicaat—een functie die een boolean retourneert—en past deze toe op elk element in de stream. Als alle elementen aan de voorwaarde voldoen, retourneert het true; anders retourneert het false.
Praktisch voorbeeld
In een online winkel is gratis verzending beschikbaar als alle artikelen in het winkelmandje meer dan $10 kosten. Er moet worden gecontroleerd of gratis verzending van toepassing is op de huidige bestelling.
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 deze code maak je een lijst van artikelprijzen: [15, 20, 12, 9]. De methode allMatch(price -> price > 10) controleert of alle artikelen meer dan $10 kosten. Als dat zo is, wordt een bericht over succesvolle gratis verzending weergegeven; anders verschijnt er een melding dat niet alle artikelen in aanmerking komen.
anyMatch() Methode
De anyMatch()-methode controleert of ten minste één element in een stream voldoet aan een opgegeven predicaat. Als ten minste één element aan de voorwaarde voldoet, retourneert de methode true en stopt de verwerking.
boolean anyMatch(Predicate<? super T> predicate)
Deze methode neemt een predicaat en past dit toe op elk element in de stream. Zodra het een overeenkomend element vindt, retourneert het true en stopt de uitvoering.
Praktisch Voorbeeld
Een online winkel biedt een VIP-programma aan als er ten minste één artikel in het winkelwagentje meer dan $500 kost. U moet controleren of de klant in aanmerking komt voor de VIP-status.
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 controleert de methode anyMatch(price -> price > 500) of er ten minste één item is met een prijs boven de $500. Indien gevonden, wordt hasExpensiveItem true en verschijnt er een bericht over het in aanmerking komen voor de VIP-status; anders verschijnt er een bericht dat er geen dure items in het winkelwagentje zijn.
noneMatch() Methode
De noneMatch()-methode controleert of geen van de elementen in een stream voldoet aan een opgegeven predicaat. Als geen enkel element aan de voorwaarde voldoet, retourneert de methode true.
boolean noneMatch(Predicate<? super T> predicate)
Deze methode neemt een predicaat en past dit toe op elk element in de stream. Als geen enkel element aan de voorwaarde voldoet, retourneert het true; anders retourneert het false.
Praktisch Voorbeeld
Een online winkel staat geen artikelen toe met een prijs onder nul. Het is nodig te controleren of er dergelijke artikelen in het winkelwagentje zijn.
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 dit voorbeeld controleert noneMatch(price -> price < 0) of er geen items zijn met een prijs onder $0. Als alle items een geldige prijs hebben, wordt een bericht ter bevestiging weergegeven; anders verschijnt er een bericht dat de aanwezigheid van een item met een ongeldige prijs aangeeft.
1. Welke methode controleert of ten minste één element in de stream aan een voorwaarde voldoet?
2. Welke methode moet worden gebruikt om te garanderen dat er geen waarden kleiner dan nul in een lijst staan?
Bedankt voor je feedback!
Vraag AI
Vraag AI
Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.