Localizar soma e média em uma matriz Java

Localizar soma e média em uma matriz Java

1. Introdução

Neste tutorial rápido, vamos cobrir como podemos calcular a soma e a média em uma matriz usando os loops padrão Java e a APIStream.

2. Localizar soma dos elementos da matriz

2.1. Soma usando um For Loop

Para encontrar a soma de todos os elementos em uma matriz,we can simply iterate the array and add each element to a sum accumulating __ variable.

Isso simplesmente começa comsum de 0 e adiciona cada item na matriz conforme avançamos:

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

2.2. Soma com a API Java Stream

Podemos usar a API Stream para obter o mesmo resultado:

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

É importante saber que o métodosum() suporta apenasprimitive type streams.

Se quisermos usar um fluxo em um valorInteger em caixa, devemos primeiro converter o fluxo emIntStream usando o métodomapToInt.

Depois disso, podemos aplicar o métodosum() ao nossoIntStream recém-convertido:

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

Você pode ler muito mais sobre o Stream APIhere.

3. Encontrar média em uma matriz Java

3.1. Média sem a API Stream

Uma vez que sabemos como calcular a soma dos elementos da matriz, encontrar a média é muito fácil - comoAverage = Sum of Elements / Number of Elements:

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

Notes:

  1. Dividir umint por outroint retorna um resultado deint. To get an accurate average, we first cast sum to double.

  2. JavaArray tem um campolength que armazena o número de elementos no array.

3.2. Média usando a API Java Stream

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

IntStream.average() retorna umOptionalDouble que pode não conter um valor e que precisa de um tratamento especial.

Leia mais sobreOptionals no artigothis e sobre a classeOptionalDouble emJava 8 Documentation.

4. Conclusão

Neste artigo, exploramos como encontrar a soma / média dos elementos do arrayint.

Como sempre, o código está disponívelover on Github.