Kontrol af Streamelementer Mod en Betingelse med allMatch()
Når du arbejder med datastreams, har du ofte behov for at kontrollere, om elementer opfylder bestemte betingelser. For eksempel kan du have brug for at verificere, at alle varer i en indkøbskurv er på lager, at mindst én vare er nedsat, eller at der ikke er annullerede ordrer.
For at håndtere disse situationer tilbyder Stream API tre nyttige metoder: allMatch(), anyMatch() og noneMatch(). Disse metoder gør det muligt hurtigt at kontrollere, om elementerne i en stream opfylder et givet predikat.
allMatch()-metoden
Metoden allMatch() kontrollerer, om alle elementer i en stream opfylder et givet predikat. Hvis mindst ét element ikke opfylder betingelsen, returnerer metoden false.
boolean allMatch(Predicate<? super T> predicate)
Denne metode tager et predikat—en funktion, der returnerer en boolean—og anvender det på hvert element i streamen. Hvis alle elementer opfylder betingelsen, returnerer den true; ellers returnerer den false.
Praktisk eksempel
I en onlinebutik er der gratis fragt, hvis alle varer i kurven koster mere end $10. Du skal kontrollere, om gratis fragt gælder for den aktuelle ordre.
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."); } } }
I denne kode oprettes en liste over varepriser: [15, 20, 12, 9]. Metoden allMatch(price -> price > 10) kontrollerer, om alle varer koster mere end $10. Hvis de gør, vises en meddelelse om vellykket gratis fragt; ellers vises en meddelelse om, at ikke alle varer opfylder betingelsen.
anyMatch() Metode
Metoden anyMatch() kontrollerer, om mindst ét element i en stream opfylder et givet prædikat. Hvis mindst ét element opfylder betingelsen, returnerer metoden true og stopper behandlingen.
boolean anyMatch(Predicate<? super T> predicate)
Denne metode modtager et predikat og anvender det på hvert element i streamen. Så snart den finder et matchende element, returnerer den true og stopper udførelsen.
Praktisk eksempel
En onlinebutik tilbyder et VIP-program, hvis mindst ét produkt i kurven koster mere end $500. Det er nødvendigt at kontrollere, om kunden opfylder kravene til 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."); } } }
Her kontrollerer metoden anyMatch(price -> price > 500), om der er mindst én vare med en pris over $500. Hvis det er tilfældet, bliver hasExpensiveItem sat til true, og en besked om kvalifikation til VIP-status udskrives; ellers vises en besked om, at der ikke er nogen dyre varer i kurven.
noneMatch()-metoden
Metoden noneMatch() kontrollerer, om ingen af elementerne i en stream opfylder en given prædikat. Hvis ingen elementer matcher betingelsen, returnerer metoden true.
boolean noneMatch(Predicate<? super T> predicate)
Denne metode tager en prædikat og anvender den på hvert element i streamen. Hvis ingen elementer opfylder betingelsen, returnerer den true; ellers returnerer den false.
Praktisk eksempel
En onlinebutik tillader ikke varer med en pris under nul. Du skal kontrollere, om der er sådanne varer i kurven.
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."); } } }
I dette eksempel kontrollerer noneMatch(price -> price < 0), om der ikke er nogen varer, der er prissat under $0. Hvis alle varer har en gyldig pris, udskrives en besked, der bekræfter dette; ellers vises en besked, der angiver tilstedeværelsen af en vare med en ugyldig pris.
1. Hvilken metode kontrollerer, om mindst ét element i strømmen opfylder en betingelse?
2. Hvilken metode bør anvendes for at sikre, at der ikke er nogen værdier mindre end nul i en liste?
Tak for dine kommentarer!
Spørg AI
Spørg AI
Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat
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
Kontrol af Streamelementer Mod en Betingelse med allMatch()
Stryg for at vise menuen
Når du arbejder med datastreams, har du ofte behov for at kontrollere, om elementer opfylder bestemte betingelser. For eksempel kan du have brug for at verificere, at alle varer i en indkøbskurv er på lager, at mindst én vare er nedsat, eller at der ikke er annullerede ordrer.
For at håndtere disse situationer tilbyder Stream API tre nyttige metoder: allMatch(), anyMatch() og noneMatch(). Disse metoder gør det muligt hurtigt at kontrollere, om elementerne i en stream opfylder et givet predikat.
allMatch()-metoden
Metoden allMatch() kontrollerer, om alle elementer i en stream opfylder et givet predikat. Hvis mindst ét element ikke opfylder betingelsen, returnerer metoden false.
boolean allMatch(Predicate<? super T> predicate)
Denne metode tager et predikat—en funktion, der returnerer en boolean—og anvender det på hvert element i streamen. Hvis alle elementer opfylder betingelsen, returnerer den true; ellers returnerer den false.
Praktisk eksempel
I en onlinebutik er der gratis fragt, hvis alle varer i kurven koster mere end $10. Du skal kontrollere, om gratis fragt gælder for den aktuelle ordre.
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."); } } }
I denne kode oprettes en liste over varepriser: [15, 20, 12, 9]. Metoden allMatch(price -> price > 10) kontrollerer, om alle varer koster mere end $10. Hvis de gør, vises en meddelelse om vellykket gratis fragt; ellers vises en meddelelse om, at ikke alle varer opfylder betingelsen.
anyMatch() Metode
Metoden anyMatch() kontrollerer, om mindst ét element i en stream opfylder et givet prædikat. Hvis mindst ét element opfylder betingelsen, returnerer metoden true og stopper behandlingen.
boolean anyMatch(Predicate<? super T> predicate)
Denne metode modtager et predikat og anvender det på hvert element i streamen. Så snart den finder et matchende element, returnerer den true og stopper udførelsen.
Praktisk eksempel
En onlinebutik tilbyder et VIP-program, hvis mindst ét produkt i kurven koster mere end $500. Det er nødvendigt at kontrollere, om kunden opfylder kravene til 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."); } } }
Her kontrollerer metoden anyMatch(price -> price > 500), om der er mindst én vare med en pris over $500. Hvis det er tilfældet, bliver hasExpensiveItem sat til true, og en besked om kvalifikation til VIP-status udskrives; ellers vises en besked om, at der ikke er nogen dyre varer i kurven.
noneMatch()-metoden
Metoden noneMatch() kontrollerer, om ingen af elementerne i en stream opfylder en given prædikat. Hvis ingen elementer matcher betingelsen, returnerer metoden true.
boolean noneMatch(Predicate<? super T> predicate)
Denne metode tager en prædikat og anvender den på hvert element i streamen. Hvis ingen elementer opfylder betingelsen, returnerer den true; ellers returnerer den false.
Praktisk eksempel
En onlinebutik tillader ikke varer med en pris under nul. Du skal kontrollere, om der er sådanne varer i kurven.
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."); } } }
I dette eksempel kontrollerer noneMatch(price -> price < 0), om der ikke er nogen varer, der er prissat under $0. Hvis alle varer har en gyldig pris, udskrives en besked, der bekræfter dette; ellers vises en besked, der angiver tilstedeværelsen af en vare med en ugyldig pris.
1. Hvilken metode kontrollerer, om mindst ét element i strømmen opfylder en betingelse?
2. Hvilken metode bør anvendes for at sikre, at der ikke er nogen værdier mindre end nul i en liste?
Tak for dine kommentarer!