Course Content
Stream API
Stream API
Checking Stream Elements Against a Condition with allMatch()
When working with data streams, you often need to check whether elements meet certain conditions. For example, you might want to verify that all items in a shopping cart are in stock, that at least one item is discounted, or that there are no canceled orders.
To handle these cases, Stream API provides three useful methods: allMatch()
, anyMatch()
, and noneMatch()
. These methods allow you to quickly check whether stream elements satisfy a given predicate.
allMatch() Method
The allMatch()
method checks whether all elements in a stream satisfy a given predicate. If at least one element does not meet the condition, the method returns false
.
This method takes a predicate—a function that returns a boolean—and applies it to each element in the stream. If all elements satisfy the condition, it returns true
; otherwise, it returns false
.
Practical Example
In an online store, free shipping is available if all items in the cart cost more than $10. You need to check whether free shipping applies to the current order.
Main
package 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 this code, you create a list of item prices: [15, 20, 12, 9]
. The method allMatch(price -> price > 10)
checks if all items cost more than $10. If they do, a message about successful free shipping is displayed; otherwise, a message indicating that not all items qualify appears.
anyMatch() Method
The anyMatch()
method checks whether at least one element in a stream satisfies a given predicate. If at least one element meets the condition, the method returns true
and stops processing.
This method takes a predicate and applies it to each element in the stream. As soon as it finds a matching element, it returns true
and stops execution.
Practical Example
An online store offers a VIP program if at least one item in the cart costs more than $500. You need to check if the customer qualifies for VIP status.
Main
package 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."); } } }
Here, the method anyMatch(price -> price > 500)
checks whether there is at least one item priced over $500. If found, hasExpensiveItem
becomes true
, and a message about qualifying for VIP status is printed; otherwise, a message indicating no expensive items in the cart appears.
noneMatch() Method
The noneMatch()
method checks whether none of the elements in a stream satisfy a given predicate. If no elements match the condition, the method returns true
.
This method takes a predicate and applies it to each element in the stream. If no elements meet the condition, it returns true
; otherwise, it returns false
.
Practical Example
An online store does not allow items with a price below zero. You need to check if there are any such items in the cart.
Main
package 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 this example, noneMatch(price -> price < 0)
checks if there are no items priced below $0. If all items have a valid price, a message confirming this is printed; otherwise, a message indicating the presence of an item with an invalid price appears.
1. Which method checks if at least one element in the stream satisfies a condition?
2. Which method should you use to ensure there are no values less than zero in a list?
Thanks for your feedback!