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;
}
Примечания
:
- Деление
int
на другоеint
возвращает результатint
. Чтобы получить точное среднее значение, мы сначала приводимсумму
кудвоению
. Массив
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 .