Перейти к основному содержимому

Найдите сумму и среднее значение в массиве Java

· 2 мин. чтения

1. Введение

В этом кратком руководстве мы расскажем, как вычислить сумму и среднее значение в массиве, используя как стандартные циклы Java, так и Stream API.

2. Найдите сумму элементов массива

2.1. Сумма с использованием цикла for

Чтобы найти сумму всех элементов в массиве, мы можем просто выполнить итерацию массива и добавить каждый элемент в переменную , накапливающую сумму . ``

Это очень просто начинается с суммы 0 и добавляет каждый элемент в массив по мере продвижения:

public static int findSumWithoutUsingStream(int[] array) {
int sum = 0;
for (int value : array) {
sum += value;
}
return sum;
}

2.2. Сумма с Java Stream API

Мы можем использовать Stream API для достижения того же результата:

public static int findSumUsingStream(int[] array) {
return Arrays.stream(array).sum();
}

Важно знать, что метод sum() поддерживает только потоки примитивного типа .

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

После этого мы можем применить метод sum() к нашему только что преобразованному IntStream :

public static int findSumUsingStream(Integer[] array) {
return Arrays.stream(array)
.mapToInt(Integer::intValue)
.sum();
}

Вы можете прочитать намного больше о Stream API здесь .

3. Найдите среднее значение в массиве Java

3.1. В среднем без Stream API

Как только мы узнаем, как вычислить сумму элементов массива, найти среднее значение довольно легко — так как Среднее = сумма элементов / количество элементов :

public static double findAverageWithoutUsingStream(int[] array) {
int sum = findSumWithoutUsingStream(array);
return (double) sum / array.length;
}

Примечания :

  1. Деление int на другое int возвращает результат int . Чтобы получить точное среднее значение, мы сначала приводим сумму к удвоению .
  2. Массив Java имеет поле длины , в котором хранится количество элементов в массиве.

3.2. Среднее с использованием Java Stream API

public static double findAverageUsingStream(int[] array) {
return Arrays.stream(array).average().orElse(Double.NaN);
}

IntStream.average() возвращает OptionalDouble , который может не содержать значения и требует специальной обработки.

Подробнее о Optionals читайте в этой статье, а о классеOptionalDouble — в документации по Java 8 .

4. Вывод

В этой статье мы рассмотрели, как найти сумму/среднее значение элементов массива int .

Как всегда, код доступен на Github .