Перевірка Елементів Потоку на Відповідність Умові за Допомогою allMatch()
Під час роботи з потоками даних часто виникає потреба перевірити, чи відповідають елементи певним умовам. Наприклад, потрібно впевнитися, що всі товари у кошику є в наявності, що хоча б один товар має знижку або що немає скасованих замовлень.
Для таких випадків Stream API надає три корисні методи: allMatch(), anyMatch() та noneMatch(). Ці методи дозволяють швидко перевірити, чи задовольняють елементи потоку заданий предикат.
Метод allMatch()
Метод allMatch() перевіряє, чи всі елементи потоку задовольняють заданий предикат. Якщо хоча б один елемент не відповідає умові, метод повертає false.
boolean allMatch(Predicate<? super T> predicate)
Цей метод приймає предикат—функцію, яка повертає boolean—та застосовує його до кожного елемента потоку. Якщо всі елементи задовольняють умову, повертається true; інакше — false.
Практичний приклад
У інтернет-магазині безкоштовна доставка доступна, якщо всі товари у кошику коштують більше ніж $10. Необхідно перевірити, чи застосовується безкоштовна доставка до поточного замовлення.
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."); } } }
У цьому коді створюється список цін товарів: [15, 20, 12, 9]. Метод allMatch(price -> price > 10) перевіряє, чи всі товари коштують більше $10. Якщо так, відображається повідомлення про успішне безкоштовне доставлення; інакше з'являється повідомлення про те, що не всі товари відповідають вимогам.
Метод anyMatch()
Метод anyMatch() перевіряє, чи хоча б один елемент у потоці задовольняє заданий предикат. Якщо хоча б один елемент відповідає умові, метод повертає true і припиняє обробку.
boolean anyMatch(Predicate<? super T> predicate)
Цей метод приймає предикат і застосовує його до кожного елемента у потоці. Як тільки знаходить відповідний елемент, повертає true і зупиняє виконання.
Практичний приклад
Інтернет-магазин пропонує VIP-програму, якщо хоча б один товар у кошику коштує більше ніж $500. Необхідно перевірити, чи клієнт має право на 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."); } } }
Тут метод anyMatch(price -> price > 500) перевіряє, чи існує хоча б один товар з ціною понад $500. Якщо такий знайдено, hasExpensiveItem набуває значення true, і виводиться повідомлення про отримання VIP-статусу; інакше з'являється повідомлення про відсутність дорогих товарів у кошику.
Метод noneMatch()
Метод noneMatch() перевіряє, чи жоден з елементів у стрімі не задовольняє заданий предикат. Якщо жоден елемент не відповідає умові, метод повертає true.
boolean noneMatch(Predicate<? super T> predicate)
Цей метод приймає предикат і застосовує його до кожного елемента у потоці. Якщо жоден елемент не задовольняє умову, повертається true; інакше повертається false.
Практичний приклад
Інтернет-магазин не дозволяє товари з ціною нижче нуля. Необхідно перевірити, чи є такі товари у кошику.
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."); } } }
У цьому прикладі noneMatch(price -> price < 0) перевіряє, чи немає елементів з ціною нижче $0. Якщо всі елементи мають коректну ціну, виводиться повідомлення з підтвердженням; інакше з'являється повідомлення про наявність елемента з некоректною ціною.
1. Який метод перевіряє, чи хоча б один елемент потоку задовольняє умову?
2. Який метод слід використовувати, щоб переконатися, що у списку немає значень менше нуля?
Дякуємо за ваш відгук!
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат
Awesome!
Completion rate improved to 2.33
Перевірка Елементів Потоку на Відповідність Умові за Допомогою allMatch()
Свайпніть щоб показати меню
Під час роботи з потоками даних часто виникає потреба перевірити, чи відповідають елементи певним умовам. Наприклад, потрібно впевнитися, що всі товари у кошику є в наявності, що хоча б один товар має знижку або що немає скасованих замовлень.
Для таких випадків Stream API надає три корисні методи: allMatch(), anyMatch() та noneMatch(). Ці методи дозволяють швидко перевірити, чи задовольняють елементи потоку заданий предикат.
Метод allMatch()
Метод allMatch() перевіряє, чи всі елементи потоку задовольняють заданий предикат. Якщо хоча б один елемент не відповідає умові, метод повертає false.
boolean allMatch(Predicate<? super T> predicate)
Цей метод приймає предикат—функцію, яка повертає boolean—та застосовує його до кожного елемента потоку. Якщо всі елементи задовольняють умову, повертається true; інакше — false.
Практичний приклад
У інтернет-магазині безкоштовна доставка доступна, якщо всі товари у кошику коштують більше ніж $10. Необхідно перевірити, чи застосовується безкоштовна доставка до поточного замовлення.
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."); } } }
У цьому коді створюється список цін товарів: [15, 20, 12, 9]. Метод allMatch(price -> price > 10) перевіряє, чи всі товари коштують більше $10. Якщо так, відображається повідомлення про успішне безкоштовне доставлення; інакше з'являється повідомлення про те, що не всі товари відповідають вимогам.
Метод anyMatch()
Метод anyMatch() перевіряє, чи хоча б один елемент у потоці задовольняє заданий предикат. Якщо хоча б один елемент відповідає умові, метод повертає true і припиняє обробку.
boolean anyMatch(Predicate<? super T> predicate)
Цей метод приймає предикат і застосовує його до кожного елемента у потоці. Як тільки знаходить відповідний елемент, повертає true і зупиняє виконання.
Практичний приклад
Інтернет-магазин пропонує VIP-програму, якщо хоча б один товар у кошику коштує більше ніж $500. Необхідно перевірити, чи клієнт має право на 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."); } } }
Тут метод anyMatch(price -> price > 500) перевіряє, чи існує хоча б один товар з ціною понад $500. Якщо такий знайдено, hasExpensiveItem набуває значення true, і виводиться повідомлення про отримання VIP-статусу; інакше з'являється повідомлення про відсутність дорогих товарів у кошику.
Метод noneMatch()
Метод noneMatch() перевіряє, чи жоден з елементів у стрімі не задовольняє заданий предикат. Якщо жоден елемент не відповідає умові, метод повертає true.
boolean noneMatch(Predicate<? super T> predicate)
Цей метод приймає предикат і застосовує його до кожного елемента у потоці. Якщо жоден елемент не задовольняє умову, повертається true; інакше повертається false.
Практичний приклад
Інтернет-магазин не дозволяє товари з ціною нижче нуля. Необхідно перевірити, чи є такі товари у кошику.
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."); } } }
У цьому прикладі noneMatch(price -> price < 0) перевіряє, чи немає елементів з ціною нижче $0. Якщо всі елементи мають коректну ціну, виводиться повідомлення з підтвердженням; інакше з'являється повідомлення про наявність елемента з некоректною ціною.
1. Який метод перевіряє, чи хоча б один елемент потоку задовольняє умову?
2. Який метод слід використовувати, щоб переконатися, що у списку немає значень менше нуля?
Дякуємо за ваш відгук!