Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Обчислення Статистики Потоку за Допомогою Count(), Max() та Min() | Секція
Practice
Projects
Quizzes & Challenges
Вікторини
Challenges
/
Stream API в Java

bookОбчислення Статистики Потоку за Допомогою Count(), Max() та Min()

Свайпніть щоб показати меню

У програмуванні часто виникає потреба підрахувати кількість елементів у колекції або знайти серед них мінімальне та максимальне значення.

Однак програмісти зазвичай не пишуть власні алгоритми для цих завдань, оскільки вже існують вбудовані методи. Stream API надає зручні методи для роботи з колекціями, дозволяючи виконувати обчислення над елементами потоку.

Серед таких методів — count(), max() та min(), які допомагають визначити кількість елементів і знайти найбільше та найменше значення.

Метод count()

Метод count() повертає кількість елементів у потоці. Його часто використовують, коли потрібно визначити розмір колекції після фільтрації даних.

long count();

Не приймає жодних параметрів і повертає примітивний тип long.

Практичний приклад

В інтернет-магазині необхідно порахувати кількість товарів зі знижкою понад 20%.

Main.java

Main.java

copy
123456789101112131415161718192021222324252627282930313233
package 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

Main.java

copy
12345678910111213141516171819202122232425262728293031323334353637383940
package 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

Main.java

copy
12345678910111213141516171819202122232425262728293031323334353637383940
package 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).

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 1. Розділ 34

Запитати АІ

expand

Запитати АІ

ChatGPT

Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат

Секція 1. Розділ 34
some-alt