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

Найти сумму и среднее в массиве 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:

  1. Разделивint на другойint, вы получите результатint. To get an accurate average, we first cast sum to double.

  2. В 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.