Отримання Зведених Метрик Потоку за Допомогою Методу summaryStatistics()
Під час обробки даних часто виникає потреба обчислювати статистичні метрики, такі як сума, середнє значення, мінімум, максимум та кількість елементів.
Ви вже ознайомилися з пошуком мінімального та максимального значень у потоці, але існує метод, який дозволяє отримати всі ці статистики одночасно. Java Stream API надає спеціальний метод summaryStatistics(), який спрощує отримання загальних статистичних даних з числових потоків.
Метод summaryStatistics()
Stream API також містить спеціалізовані числові потоки: IntStream, LongStream та DoubleStream. Вони працюють так само, як і звичайні потоки, але оптимізовані для певних примітивних типів.
Кожен із цих числових потоків містить метод summaryStatistics(), який повертає екземпляр IntSummaryStatistics, LongSummaryStatistics або DoubleSummaryStatistics відповідно. Ці об'єкти містять основні статистичні метрики, такі як кількість, сума, мінімум, максимум та середнє значення.
IntSummaryStatistics summaryStatistics();
LongSummaryStatistics summaryStatistics();
DoubleSummaryStatistics summaryStatistics();
Використовуючи метод summaryStatistics() для числового потоку, можна швидко отримати та проаналізувати статистичні дані про його значення.
Основні методи
У Java класи IntSummaryStatistics, LongSummaryStatistics та DoubleSummaryStatistics використовуються для збору статистики по числових даних. Вони надають набір методів для отримання основних статистичних показників.
Практичний приклад
В інтернет-магазині потрібно проаналізувати ціни товарів, щоб визначити мінімальну та максимальну ціну, середню ціну та загальну кількість товарів.
Main.java
1234567891011121314151617181920package com.example; import java.util.List; import java.util.IntSummaryStatistics; import java.util.stream.Collectors; public class Main { public static void main(String[] args) { List<Integer> prices = List.of(1500, 2000, 3500, 1200, 4000, 2500); IntSummaryStatistics stats = prices.stream() .collect(Collectors.summarizingInt(Integer::intValue)); System.out.println("Minimum price: " + stats.getMin()); System.out.println("Maximum price: " + stats.getMax()); System.out.println("Average price: " + stats.getAverage()); System.out.println("Total number of items: " + stats.getCount()); System.out.println("Total sum: " + stats.getSum()); } }
У цьому коді створюється список цін продуктів і перетворюється на числовий стрім. Метод Collectors.summarizingInt(Integer::intValue) збирає статистичні дані та зберігає їх у об'єкті IntSummaryStatistics. Далі використовуються методи getMin(), getMax(), getAverage(), getCount() і getSum() для отримання необхідних значень.
Додаткові методи
Метод combine() об'єднує два статистичних об'єкти. Це корисно при обробці даних у кількох потоках або при консолідації статистики з різних джерел.
Метод accept() дозволяє вручну додавати значення до статистичного об'єкта, що зручно для динамічного оновлення даних.
Main.java
1234567891011121314151617181920212223package com.example; import java.util.IntSummaryStatistics; public class Main { public static void main(String[] args) { IntSummaryStatistics stats1 = new IntSummaryStatistics(); stats1.accept(1500); stats1.accept(2500); IntSummaryStatistics stats2 = new IntSummaryStatistics(); stats2.accept(3500); stats2.accept(4500); stats1.combine(stats2); System.out.println("Minimum price: " + stats1.getMin()); System.out.println("Maximum price: " + stats1.getMax()); System.out.println("Average price: " + stats1.getAverage()); System.out.println("Total number of items: " + stats1.getCount()); System.out.println("Total sum: " + stats1.getSum()); } }
У цьому прикладі створюються два об'єкти IntSummaryStatistics, кожен з яких містить значення, додані за допомогою методу accept(). Метод combine() потім об'єднує статистику з обох об'єктів, оновлюючи загальну кількість, суму та мінімальні/максимальні значення.
У результаті, stats1 тепер містить об'єднану статистику для всіх чисел, яка потім виводиться на консоль.
1. Який клас використовується для збору статистики за значеннями int у Stream API?
2. Який метод додає значення до об'єкта IntSummaryStatistics?
3. Який метод об'єднує два об'єкти IntSummaryStatistics?
Дякуємо за ваш відгук!
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат
Awesome!
Completion rate improved to 2.33
Отримання Зведених Метрик Потоку за Допомогою Методу summaryStatistics()
Свайпніть щоб показати меню
Під час обробки даних часто виникає потреба обчислювати статистичні метрики, такі як сума, середнє значення, мінімум, максимум та кількість елементів.
Ви вже ознайомилися з пошуком мінімального та максимального значень у потоці, але існує метод, який дозволяє отримати всі ці статистики одночасно. Java Stream API надає спеціальний метод summaryStatistics(), який спрощує отримання загальних статистичних даних з числових потоків.
Метод summaryStatistics()
Stream API також містить спеціалізовані числові потоки: IntStream, LongStream та DoubleStream. Вони працюють так само, як і звичайні потоки, але оптимізовані для певних примітивних типів.
Кожен із цих числових потоків містить метод summaryStatistics(), який повертає екземпляр IntSummaryStatistics, LongSummaryStatistics або DoubleSummaryStatistics відповідно. Ці об'єкти містять основні статистичні метрики, такі як кількість, сума, мінімум, максимум та середнє значення.
IntSummaryStatistics summaryStatistics();
LongSummaryStatistics summaryStatistics();
DoubleSummaryStatistics summaryStatistics();
Використовуючи метод summaryStatistics() для числового потоку, можна швидко отримати та проаналізувати статистичні дані про його значення.
Основні методи
У Java класи IntSummaryStatistics, LongSummaryStatistics та DoubleSummaryStatistics використовуються для збору статистики по числових даних. Вони надають набір методів для отримання основних статистичних показників.
Практичний приклад
В інтернет-магазині потрібно проаналізувати ціни товарів, щоб визначити мінімальну та максимальну ціну, середню ціну та загальну кількість товарів.
Main.java
1234567891011121314151617181920package com.example; import java.util.List; import java.util.IntSummaryStatistics; import java.util.stream.Collectors; public class Main { public static void main(String[] args) { List<Integer> prices = List.of(1500, 2000, 3500, 1200, 4000, 2500); IntSummaryStatistics stats = prices.stream() .collect(Collectors.summarizingInt(Integer::intValue)); System.out.println("Minimum price: " + stats.getMin()); System.out.println("Maximum price: " + stats.getMax()); System.out.println("Average price: " + stats.getAverage()); System.out.println("Total number of items: " + stats.getCount()); System.out.println("Total sum: " + stats.getSum()); } }
У цьому коді створюється список цін продуктів і перетворюється на числовий стрім. Метод Collectors.summarizingInt(Integer::intValue) збирає статистичні дані та зберігає їх у об'єкті IntSummaryStatistics. Далі використовуються методи getMin(), getMax(), getAverage(), getCount() і getSum() для отримання необхідних значень.
Додаткові методи
Метод combine() об'єднує два статистичних об'єкти. Це корисно при обробці даних у кількох потоках або при консолідації статистики з різних джерел.
Метод accept() дозволяє вручну додавати значення до статистичного об'єкта, що зручно для динамічного оновлення даних.
Main.java
1234567891011121314151617181920212223package com.example; import java.util.IntSummaryStatistics; public class Main { public static void main(String[] args) { IntSummaryStatistics stats1 = new IntSummaryStatistics(); stats1.accept(1500); stats1.accept(2500); IntSummaryStatistics stats2 = new IntSummaryStatistics(); stats2.accept(3500); stats2.accept(4500); stats1.combine(stats2); System.out.println("Minimum price: " + stats1.getMin()); System.out.println("Maximum price: " + stats1.getMax()); System.out.println("Average price: " + stats1.getAverage()); System.out.println("Total number of items: " + stats1.getCount()); System.out.println("Total sum: " + stats1.getSum()); } }
У цьому прикладі створюються два об'єкти IntSummaryStatistics, кожен з яких містить значення, додані за допомогою методу accept(). Метод combine() потім об'єднує статистику з обох об'єктів, оновлюючи загальну кількість, суму та мінімальні/максимальні значення.
У результаті, stats1 тепер містить об'єднану статистику для всіх чисел, яка потім виводиться на консоль.
1. Який клас використовується для збору статистики за значеннями int у Stream API?
2. Який метод додає значення до об'єкта IntSummaryStatistics?
3. Який метод об'єднує два об'єкти IntSummaryStatistics?
Дякуємо за ваш відгук!