Найти сумму и среднее в массиве Java
1. Вступление
В этом кратком руководстве мы расскажем, как вычислить сумму и среднее значение в массиве, используя как стандартные циклы Java, так и APIStream.
2. Найти сумму элементов массива
2.1. Суммирование с использованием цикла For
Чтобы найти сумму всех элементов в массиве,we can simply iterate the array and add each element to a sum accumulating __ variable.
Это очень просто начинается сsum, равного 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() поддерживает толькоprimitive type streams.
Если мы хотим использовать поток для упакованного значенияInteger, мы должны сначала преобразовать поток вIntStream с помощью методаmapToInt.
После этого мы можем применить методsum() к нашему недавно преобразованномуIntStream:
public static int findSumUsingStream(Integer[] array) {
return Arrays.stream(array)
.mapToInt(Integer::intValue)
.sum();
}
Вы можете узнать больше о Stream APIhere.
3. Найти среднее значение в массиве Java
3.1. Среднее без Stream API
Как только мы узнаем, как вычислить сумму элементов массива, найти среднее будет довольно просто - какAverage = Sum of Elements / Number of Elements:
public static double findAverageWithoutUsingStream(int[] array) {
int sum = findSumWithoutUsingStream(array);
return (double) sum / array.length;
}
Notes:
-
Разделивint на другойint, вы получите результатint. To get an accurate average, we first cast sum to double.
-
В JavaArray есть полеlength, в котором хранится количество элементов в массиве.
3.2. Среднее значение с использованием Java Stream API
public static double findAverageUsingStream(int[] array) {
return Arrays.stream(array).average().orElse(Double.NaN);
}
IntStream.average() возвращаетOptionalDouble, которое может не содержать значения и которое требует особой обработки.
Узнайте больше оOptionals в статьеthis и о классеOptionalDouble вJava 8 Documentation.
4. Заключение
В этой статье мы изучили, как найти сумму / среднее значение элементов массиваint.
Как всегда доступен кодover on Github.