Рубрики
Без рубрики

Выполнение базовой статистики в Java 8

Интерфейс потока представлен в Java 8, который поддерживает параллельное выполнение. Интерфейс потока… С тегами java, java8, статистика, потоковый api.

Интерфейс потока представлен в Java 8, который поддерживает параллельное выполнение. Интерфейс потока поддерживает сортировку, сопоставление, фильтрацию, сокращение шаблона и легко выполняется, образуя основу (наряду с лямбдами) для программирования в функциональном стиле. Существуют также соответствующие примитивные потоки ( IntStream , Двойной поток и Длинный поток ) по соображениям производительности.

В этой статье мы рассмотрим, как выполнять базовую статистику, такую как максимум, минимум, среднее (среднее) и количество вхождений для целей представления данных с помощью API потока и коллекций. Наш подход будет заключаться в создании значений с использованием одного из классов API потока ( java.util.stream ) и утилит сбора и статистики, предоставляемых в пакете java.util под названием DoubleSummaryStatistics (Вы также можете изучить Итоговую статистику и Общая сводная статистика для выполнения с ними базовой статистики).

Предположим, у нас есть набор данных, мы будем использовать из из двойного потока ((API потока) для сбора, сортировки или фильтрации наших данных и использования сводной статистики метод получения максимального, минимального, среднего значения, количества и суммы наших данных.

Мы будем использовать частоту метод Коллекций , чтобы получить количество встречаемости значения в наборе данных, которое может быть использовано для формирования основы представления в виде гистограммы.

Давайте начнем кодировать, чтобы увидеть это в действии.

package com.habeebcycle;

import java.util.stream.*;
import java.util.*;

public class BasicStats{    
    public static void main (String[] args) {

                //Dataset as follows
        double dataset[] = {32, 23, 54, 15.2, 26.3, 7.1, 18.7, 14.2, 23,
                 25, 21.7, 12.4, 21, 24, 42, 55, 23, 14.5, 21.3, 26.3, 53, 23,
                 15.2, 7.1, 15.4, 23, 15.2, 14.2, 14.2, 25, 18.7, 15.2, 14.5};

        //Get the basic statistics
        DoubleSummaryStatistics stats = 
                    DoubleStream.of(dataset).summaryStatistics();

        // Now stats variable has our basic stats

        //Let's get the total values in our dataset
        System.out.println (stats.getCount()); //Gives 33;

        //Let's get the sum
        System.out.println (stats.getSum()); //Gives 753.4

        //Let's get the mean (average)
        System.out.println (stats.getAverage()); //Gives 22.83

        //Let's get the maximum
        System.out.println (stats.getMax()); //Gives 55.0

        //Let's get the maximum
        System.out.println (stats.getMin()); //Gives 7.10
    }
}

Мы можем объединить статистические результаты, чтобы работать с ними сразу, используя

   stats.combine(DoubleSummaryStatistics otherStats);

Чтобы получить наш набор данных в качестве подхода к представлению, мы собираемся использовать метод потока в штучной упаковке() , чтобы метод collect мог работать с Коллекционеры класс.

Коллекторы класс имеет метод, называемый группировка по , которая может быть использована для группировки нашего набора данных в отдельный набор путем подсчета количества встречаемости каждого значения в наборе данных.

Map histogram =
 DoubleStream.of(dataset)
  .boxed()
  .collect(Collectors.groupingBy(
       e -> e, 
       Collectors.counting()
   ));

гистограмма теперь содержит все данные с числом встречаемости в виде карты “ключ-значение”. Мы можем использовать наш собственный метод для печати гистограммы с использованием звездочек.

for(Double data : histogram.keySet()){
   System.out.println (
     data + " : " + histogram.get(data) + " : " + getStars(histogram.get(data))
   );
}

Где getstatus метод определяется следующим образом:

public static String getStars(long number){
   String output = "";
   for(int i = 1; i <= number; i++){
      output += " * ";
   }
   return output;
}

Выходные данные представляют наши данные в виде гистограммы

32.0 : 1 :  * 
18.7 : 2 :  *  * 
15.4 : 1 :  * 
42.0 : 1 :  * 
12.4 : 1 :  * 
21.7 : 1 :  * 
15.2 : 4 :  *  *  *  * 
53.0 : 1 :  * 
14.2 : 3 :  *  *  * 
55.0 : 1 :  * 
54.0 : 1 :  * 
14.5 : 2 :  *  * 
21.0 : 1 :  * 
26.3 : 2 :  *  * 
23.0 : 5 :  *  *  *  *  * 
21.3 : 1 :  * 
24.0 : 1 :  * 
25.0 : 2 :  *  * 
7.1  : 2 :  *  *

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

Оригинал: “https://dev.to/habeebcycle/performing-basic-stats-in-java-8-5dfl”