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());
}
}