Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

1
resposta

Resolução do Desafio

import java.util.Comparator;
import java.util.List;

public class Main {
    public static void main(String[] args) {

        List<Double> notas = List.of(7.5, 8.0, 6.5, 9.0, 10.0);

        Double somaTotalNotas = notas.stream()
                .reduce(0.0, Double::sum);

        Double mediaNotas = somaTotalNotas / notas.size();

        Double menorNota = notas.stream()
                .min(Comparator.naturalOrder())
                .orElseThrow();

        Double maiorNota = notas.stream()
                .max(Comparator.naturalOrder())
                .orElseThrow();

        System.out.println("A média das notas é: " + mediaNotas);
        System.out.println("A menor nota foi: : " + menorNota);
        System.out.println("A maior nota foi: " + maiorNota);

    }
}
1 resposta

Oi, Pablo. Tudo bem com você?

Sua solução para o desafio ficou muito boa. Você usou o reduce para fazer a soma dos valores e depois calculou a média dividindo pelo tamanho da lista. Também utilizou min e max com Comparator para encontrar a menor e a maior nota, exatamente como a atividade pedia.

O mais legal é que você conseguiu resolver o desafio usando os recursos do stream sem complicar a solução. O reduce, principalmente, é um recurso bem interessante para entender como podemos trabalhar com os valores de uma coleção e chegar a um resultado a partir deles.

Você chegou a testar como o código se comporta se a lista de notas estiver vazia ao tentar buscar a menor e a maior nota com o orElseThrow?

Parabéns pelo excelente resultado e pela dedicação nos estudos. O fórum está sempre à disposição para o que precisar.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!