1. введение
В этом кратком руководстве мы рассмотрим, как мы можем вычислить сумму и среднее значение в массиве, используя как стандартные циклы Java, так и API Stream .
2. Найдите сумму элементов массива
2.1. Сумма с использованием цикла For
Чтобы найти сумму всех элементов в массиве, мы можем просто перебрать массив и добавить каждый элемент в sum аккумулирующую | переменную.
Это очень просто начинается с sum 0 и добавляет каждый элемент в массив по мере продвижения:
public static int findSumWithoutUsingStream(int[] array) { int sum = 0; for (int value : array) { sum += value; } return sum; }
2.2. Суммирование с помощью API Java 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(); }
Вы можете прочитать гораздо больше о потоковом API здесь .
3. Найдите среднее значение в массиве Java
3.1. Среднее значение без API потока
Как только мы узнаем, как вычислить сумму элементов массива, найти среднее значение довольно легко – как Среднее значение элементов/Количество элементов :
public static double findAverageWithoutUsingStream(int[] array) { int sum = findSumWithoutUsingStream(array); return (double) sum / array.length; }
Примечания :
- Деление int на другое int возвращает результат int . Чтобы получить точное среднее значение, мы сначала приведем sum к double .
- Java Array имеет поле length , в котором хранится количество элементов в массиве.
3.2. Среднее значение с использованием API Java Stream
public static double findAverageUsingStream(int[] array) { return Arrays.stream(array).average().orElse(Double.NaN); }
IntStream.average() возвращает Необязательный Double , который может не содержать значения и требует специальной обработки.
Подробнее о Options в этой статье и о Необязательном классе Double в документации Java 8 .
4. Заключение
В этой статье мы рассмотрели, как найти сумму/среднее значение элементов массива int .
Как всегда, код доступен на Github .