2
respostas

Faça como eu fiz

import java.util.Arrays;
import java.util.DoubleSummaryStatistics;
import java.util.List;
import java.util.stream.Collectors;

public class EpisodeStatistics {
public static void main(String[] args) {
// Dados de exemplo das avaliações dos episódios
List episodeRatings = Arrays.asList(8.5, 7.8, 9.2, 6.9, 8.1, 7.5, 8.7, 7.2, 8.4, 7.9);

    // Calcular as estatísticas por temporada
    calculateSeasonStatistics(episodeRatings);

    // Calcular as estatísticas gerais da série
    calculateSeriesStatistics(episodeRatings);
}

private static void calculateSeasonStatistics(List<Double> episodeRatings) {
    System.out.println("Estatísticas por temporada:");

    // Dividir os episódios em temporadas (exemplo com 2 temporadas)
    List<Double> season1 = episodeRatings.subList(0, 5);
    List<Double> season2 = episodeRatings.subList(5, 10);

    // Calcular as estatísticas para cada temporada
    printSeasonStatistics("Temporada 1", season1);
    printSeasonStatistics("Temporada 2", season2);
}

private static void printSeasonStatistics(String seasonLabel, List<Double> seasonRatings) {
    DoubleSummaryStatistics stats = seasonRatings.stream()
            .collect(Collectors.summarizingDouble(Double::doubleValue));

    System.out.printf("%s: Média = %.2f, Melhor = %.2f, Pior = %.2f, Total = %.2f%n",
            seasonLabel, stats.getAverage(), stats.getMax(), stats.getMin(), stats.getSum());
}

private static void calculateSeriesStatistics(List<Double> episodeRatings) {
    System.out.println("\nEstatísticas gerais da série:");

    DoubleSummaryStatistics stats = episodeRatings.stream()
            .collect(Collectors.summarizingDouble(Double::doubleValue));

    System.out.printf("Média geral = %.2f, Melhor episódio = %.2f, Pior episódio = %.2f, Total = %.2f%n",
            stats.getAverage(), stats.getMax(), stats.getMin(), stats.getSum());

    // Usar o método peek() para "espiar" os valores
    System.out.println("\nPrimeiros 3 valores do stream (usando peek()):");
    episodeRatings.stream()
            .limit(3)
            .peek(System.out::println)
            .collect(Collectors.toList());
}

}

2 respostas

Boa tarde Marcos!

Isso ai!