Find sum og gennemsnit i en Java Array

1. Introduktion

I denne hurtige vejledning dækker vi, hvordan vi kan beregne sum og gennemsnit i en matrix ved hjælp af både Java-standardløkker og Strøm API.

2. Find summen af ​​matrixelementer

2.1. Sum ved hjælp af a Til Sløjfe

For at finde summen af ​​alle elementer i en matrix, vi kan simpelthen gentage arrayet og føje hvert element til a sum akkumulerervariabel.

Dette starter ganske enkelt med en sum på 0 og tilføj hvert element i arrayet, mens vi går:

offentlig statisk int findSumWithoutUsingStream (int [] array) {int sum = 0; for (int-værdi: array) {sum + = værdi; } returneringssum }

2.2. Summen med Java Stream API

Vi kan bruge Stream API til at opnå det samme resultat:

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

Det er vigtigt at vide, at sum() metoden understøtter kun primitive type streams.

Hvis vi vil bruge en stream på en boks Heltal værdi, skal vi først konvertere strømmen til IntStream bruger mapToInt metode.

Derefter kan vi anvende sum() metode til vores nyligt konverterede IntStream:

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

Du kan læse meget mere om Stream API her.

3. Find gennemsnit i en Java Array

3.1. Gennemsnit uden Stream API

Når vi først ved, hvordan vi beregner summen af ​​matrixelementer, er det nemt at finde gennemsnit - som Gennemsnit = Summen af ​​elementer / antal elementer:

offentlig statisk dobbelt findAverageWithoutUsingStream (int [] array) {int sum = findSumWithoutUsingStream (array); returnere (dobbelt) sum / array.length; }

Bemærkninger:

  1. Opdeling af en int af en anden int returnerer en int resultat. For at få et nøjagtigt gennemsnit kaster vi først sum til dobbelt.
  2. Java Array har en længde felt, der gemmer antallet af elementer i arrayet.

3.2. Gennemsnit ved hjælp af Java Stream API

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

IntStream.average () returnerer en Valgfri Dobbelt som muligvis ikke indeholder en værdi, og som kræver særlig håndtering.

Læs mere om Ekstraudstyr i denne artikel og om Valgfri Dobbelt klasse i Java 8-dokumentationen.

4. Konklusion

I denne artikel undersøgte vi, hvordan man finder sum / gennemsnit af int matrixelementer.

Som altid er koden tilgængelig på Github.