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

1. Въведение

В този бърз урок ще разгледаме как можем да изчислим сумата и средната стойност в масив, използвайки както стандартните цикли на Java, така и Stream API.

2. Намерете сума от елементи на масива

2.1. Сума с помощта на For Loop

За да намерим сумата на всички елементи в масив, можем просто да итерираме масива и да добавим всеки елемент към натрупваща се сумапроменлива.

Това много просто започва със сума от 0 и добавяме всеки елемент от масива, докато вървим:

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

2.2. Сумиране с API на Java Stream

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

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

Важно е да знаете, че методът sum () поддържа само потоци от примитивен тип.

Ако искаме да използваме поток върху полето Integer стойност, първо трябва да конвертираме потока в IntStream, използвайки метода mapToInt .

След това можем да приложим метода sum () към нашия новоконвертиран IntStream :

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

Можете да прочетете много повече за Stream API тук.

3. Намерете средно в Java масив

3.1. Средно без API на Stream

След като знаем как да изчислим сумата на елементите на масива, намирането на средна стойност е доста лесно - като Средно = Сума на елементите / Брой елементи :

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

Бележки :

  1. Разделянето на int на друг int връща резултат int . За да получим точна средна стойност, първо даваме сума, за да удвоим .
  2. Java Array има поле с дължина, което съхранява броя на елементите в масива.

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.