Găsiți suma și media într-o matrice Java

1. Introducere

În acest tutorial rapid, vom analiza modul în care putem calcula suma și media într-o matrice utilizând atât bucle standard Java, cât și API-ul Stream .

2. Găsiți suma elementelor matrice

2.1. Suma folosind o buclă For

Pentru a găsi suma tuturor elementelor dintr-o matrice, putem pur și simplu itera matricea și adăuga fiecare element la o sumă care se acumuleazăvariabil.

Acest lucru începe pur și simplu cu o sumă de 0 și adăugați fiecare element din matrice pe măsură ce mergem:

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

2.2. Sumați cu API-ul Java Stream

Putem folosi API-ul Stream pentru a obține același rezultat:

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

Este important să știm că metoda sum () acceptă numai fluxuri de tip primitiv.

Dacă dorim să folosim un flux pe o valoare Integer în cutie , trebuie mai întâi să convertim fluxul în IntStream folosind metoda mapToInt .

După aceea, putem aplica metoda sum () noii noastre conversii IntStream :

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

Puteți citi mai multe despre API-ul Stream aici.

3. Găsiți Media într-o matrice Java

3.1. Media fără API-ul Stream

Odată ce știm cum să calculăm suma elementelor matrice, găsirea mediei este destul de ușoară - ca medie = suma elementelor / numărul de elemente :

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

Note :

  1. Împărțirea unui int cu un alt int returnează un rezultat int . Pentru a obține o medie exactă, vom arunca mai întâi suma la dublu .
  2. Java Array are un câmp de lungime care stochează numărul de elemente din matrice.

3.2. Medie folosind API-ul Java Stream

public static double findAverageUsingStream(int[] array) { return Arrays.stream(array).average().orElse(Double.NaN); }

IntStream.average () returnează un OptionalDouble care poate să nu conțină o valoare și care necesită o manipulare specială.

Citiți mai multe despre opționalele din acest articol și despre clasa OptionalDouble din documentația Java 8.

4. Concluzie

În acest articol, am explorat cum să găsim suma / media elementelor matricei int .

Ca întotdeauna, codul este disponibil pe Github.