Вычислить сумму и среднее значение элементов массива

Научитесь находить сумму и среднее значение чисел, хранящихся в массиве. Мы будем использовать Java Stream API и простой цикл for для нахождения этих значений.

Обратите внимание, что числа в Java представлены 8 примитивами, а именно: short, char, byte, boolean, int, float, long и double.

  • Мы можем использовать IntStream для значений short, char, byte, boolean и int.
  • Для длинных значений можно использовать LongStream.
  • Мы используем DoubleStream для чисел с плавающей точкой, таких как float и double.

Когда мы передаем примитивные массивы в метод Arrays.stream(), то мы получаем любой тип потока, то есть IntStream, LongStream или DoubleStream.

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

1. Нахождение суммы элементов массива

Есть несколько способов получить сумму чисел, хранящихся в массиве.

  • длинный поток.sum()
  • длинный поток.summaryStatistics().sum()
  • Итерация элементов с использованием цикла for.

Давайте рассмотрим пример обоих методов, использующих типы массивов int[] и Integer[]. Мы получим сумму в типе данных long или double в зависимости от типа потока, из которого мы получаем массив.

int[] intArray = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};Integer[] integerArray = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};//1long sum = Arrays.stream(intArray).sum();//2long sum = Arrays.stream(integerArray).mapToInt(i -> i).sum();//3long sum = Arrays.stream(intArray).summaryStatistics().getSum();

Если мы хотим зациклить элемент, это можно сделать следующим образом.

long sum = 0;for(int value : intArray) {sum += value;}System.out.println(sum);

2. Нахождение среднего значения элементов массива

Нахождение среднего значения во многом похоже на нахождение суммы, как описано в предыдущем разделе. Мы можем вызвать метод stream.average() вместо sum().

Тип данных, используемый для хранения среднего значения, — double.

//1double average = Arrays.stream(intArray).average().orElse(Double.NaN);//2double average = Arrays.stream(intArray).summaryStatistics().getAverage();

3. Заключение

В этом коротком уроке мы научились использовать API потока для получения суммы и среднего значения элементов, хранящихся в массиве. Использование потоков обеспечивает дополнительные преимущества, такие как применение фильтрации к элементам потока без влияния на исходный массив.

Исходный код на Github

Прокрутить вверх