Обчислення Статистики Потоку За Допомогою Count(), Max() Та Min()
У програмуванні часто виникає потреба порахувати кількість елементів у колекції або знайти серед них мінімальне та максимальне значення.
Однак програмісти зазвичай не пишуть власні алгоритми для таких завдань, оскільки вже існують вбудовані методи. Stream API надає зручні методи для роботи з колекціями, дозволяючи виконувати обчислення над елементами потоку.
Серед таких методів — count(), max() та min(), які допомагають визначити кількість елементів і знайти найбільше та найменше значення.
Метод count()
Метод count() повертає кількість елементів у потоці. Його часто використовують, коли потрібно визначити розмір колекції після фільтрації даних.
long count();
Не приймає жодних параметрів і повертає примітивний тип long.
Практичний приклад
В інтернет-магазині потрібно порахувати кількість товарів зі знижкою понад 20%.
Main.java
123456789101112131415161718192021222324252627282930313233package com.example; import java.util.List; public class Main { public static void main(String[] args) { List<Product> products = List.of( new Product("Laptop", 15.0), new Product("Smartphone", 25.0), new Product("Tablet", 30.0) ); long discountedProducts = products.stream() .filter(product -> product.getDiscount() > 20.0) .count(); System.out.println("Number of products with more than 20% discount: " + discountedProducts); } } class Product { private String name; private double discount; public Product(String name, double discount) { this.name = name; this.discount = discount; } public double getDiscount() { return discount; } }
У цьому прикладі метод filter() вибирає продукти зі знижкою понад 20%, а count() визначає їхню кількість.
Метод max()
Метод max() повертає максимальний елемент у потоці відповідно до заданого Comparator. Якщо потік порожній, повертається Optional.empty().
Optional<T> max(Comparator<? super T> comparator);
Практичний приклад
Знайти найдорожчий товар в інтернет-магазині для просування його як преміального продукту.
Main.java
12345678910111213141516171819202122232425262728293031323334353637383940package com.example; import java.util.List; import java.util.Optional; import java.util.Comparator; public class Main { public static void main(String[] args) { List<Product> products = List.of( new Product("Laptop", 1200.0), new Product("Smartphone", 800.0), new Product("Tablet", 600.0) ); Optional<Product> mostExpensiveProduct = products.stream() .max(Comparator.comparing(Product::getPrice)); mostExpensiveProduct.ifPresent(product -> System.out.println("Most expensive product: " + product.getName() + " - $" + product.getPrice()) ); } } class Product { private String name; private double price; public Product(String name, double price) { this.name = name; this.price = price; } public double getPrice() { return price; } public String getName() { return name; } }
У цьому коді Comparator.comparing(Product::getPrice) порівнює товари за ціною, а max() обирає найдорожчий.
Метод min()
Метод min() подібний до max(), але повертає найменший елемент у потоці на основі заданого Comparator.
Optional<T> min(Comparator<? super T> comparator);
Практичний приклад
Пошук товару з найменшим залишком на складі для оцінки потреби у поповненні запасів.
Main.java
12345678910111213141516171819202122232425262728293031323334353637383940package com.example; import java.util.List; import java.util.Optional; import java.util.Comparator; public class Main { public static void main(String[] args) { List<Product> products = List.of( new Product("Laptop", 5), new Product("Smartphone", 0), new Product("Tablet", 2) ); Optional<Product> leastStockProduct = products.stream() .min(Comparator.comparing(Product::getStock)); leastStockProduct.ifPresent(product -> System.out.println("Product with the lowest stock: " + product.getName() + " - " + product.getStock() + " units") ); } } class Product { private String name; private int stock; public Product(String name, int stock) { this.name = name; this.stock = stock; } public int getStock() { return stock; } public String getName() { return name; } }
Цей код визначає товар з найменшими запасами за допомогою методу min() та Comparator.comparing(Product::getStock).
Дякуємо за ваш відгук!
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат
Awesome!
Completion rate improved to 2.33
Обчислення Статистики Потоку За Допомогою Count(), Max() Та Min()
Свайпніть щоб показати меню
У програмуванні часто виникає потреба порахувати кількість елементів у колекції або знайти серед них мінімальне та максимальне значення.
Однак програмісти зазвичай не пишуть власні алгоритми для таких завдань, оскільки вже існують вбудовані методи. Stream API надає зручні методи для роботи з колекціями, дозволяючи виконувати обчислення над елементами потоку.
Серед таких методів — count(), max() та min(), які допомагають визначити кількість елементів і знайти найбільше та найменше значення.
Метод count()
Метод count() повертає кількість елементів у потоці. Його часто використовують, коли потрібно визначити розмір колекції після фільтрації даних.
long count();
Не приймає жодних параметрів і повертає примітивний тип long.
Практичний приклад
В інтернет-магазині потрібно порахувати кількість товарів зі знижкою понад 20%.
Main.java
123456789101112131415161718192021222324252627282930313233package com.example; import java.util.List; public class Main { public static void main(String[] args) { List<Product> products = List.of( new Product("Laptop", 15.0), new Product("Smartphone", 25.0), new Product("Tablet", 30.0) ); long discountedProducts = products.stream() .filter(product -> product.getDiscount() > 20.0) .count(); System.out.println("Number of products with more than 20% discount: " + discountedProducts); } } class Product { private String name; private double discount; public Product(String name, double discount) { this.name = name; this.discount = discount; } public double getDiscount() { return discount; } }
У цьому прикладі метод filter() вибирає продукти зі знижкою понад 20%, а count() визначає їхню кількість.
Метод max()
Метод max() повертає максимальний елемент у потоці відповідно до заданого Comparator. Якщо потік порожній, повертається Optional.empty().
Optional<T> max(Comparator<? super T> comparator);
Практичний приклад
Знайти найдорожчий товар в інтернет-магазині для просування його як преміального продукту.
Main.java
12345678910111213141516171819202122232425262728293031323334353637383940package com.example; import java.util.List; import java.util.Optional; import java.util.Comparator; public class Main { public static void main(String[] args) { List<Product> products = List.of( new Product("Laptop", 1200.0), new Product("Smartphone", 800.0), new Product("Tablet", 600.0) ); Optional<Product> mostExpensiveProduct = products.stream() .max(Comparator.comparing(Product::getPrice)); mostExpensiveProduct.ifPresent(product -> System.out.println("Most expensive product: " + product.getName() + " - $" + product.getPrice()) ); } } class Product { private String name; private double price; public Product(String name, double price) { this.name = name; this.price = price; } public double getPrice() { return price; } public String getName() { return name; } }
У цьому коді Comparator.comparing(Product::getPrice) порівнює товари за ціною, а max() обирає найдорожчий.
Метод min()
Метод min() подібний до max(), але повертає найменший елемент у потоці на основі заданого Comparator.
Optional<T> min(Comparator<? super T> comparator);
Практичний приклад
Пошук товару з найменшим залишком на складі для оцінки потреби у поповненні запасів.
Main.java
12345678910111213141516171819202122232425262728293031323334353637383940package com.example; import java.util.List; import java.util.Optional; import java.util.Comparator; public class Main { public static void main(String[] args) { List<Product> products = List.of( new Product("Laptop", 5), new Product("Smartphone", 0), new Product("Tablet", 2) ); Optional<Product> leastStockProduct = products.stream() .min(Comparator.comparing(Product::getStock)); leastStockProduct.ifPresent(product -> System.out.println("Product with the lowest stock: " + product.getName() + " - " + product.getStock() + " units") ); } } class Product { private String name; private int stock; public Product(String name, int stock) { this.name = name; this.stock = stock; } public int getStock() { return stock; } public String getName() { return name; } }
Цей код визначає товар з найменшими запасами за допомогою методу min() та Comparator.comparing(Product::getStock).
Дякуємо за ваш відгук!