Map<Integer, Double> evaluacionesPorTemporada = episodios.stream()
.filter(e -> e.getEvaluacion() > 0.0)
.collect(Collectors.groupingBy(
Episodio::getTemporada,
Collectors.averagingDouble(Episodio::getEvaluacion)
));
System.out.println("\nPromedio de evaluación por temporada:");
evaluacionesPorTemporada.forEach((temporada, promedio) ->
System.out.println("Temporada " + temporada + ": " + promedio));
DoubleSummaryStatistics est = episodios.stream()
.filter(e -> e.getEvaluacion() > 0.0)
.collect(Collectors.summarizingDouble(Episodio::getEvaluacion));
System.out.println("\nEstadísticas generales de evaluaciones:");
System.out.println("Cantidad de episodios evaluados: " + est.getCount());
System.out.println("Promedio de evaluación: " + est.getAverage());
System.out.println("Mejor evaluación: " + est.getMax());
System.out.println("Peor evaluación: " + est.getMin());
System.out.println("Suma total de evaluaciones: " + est.getSum());
Optional mejorEpisodio = episodios.stream()
.filter(e -> e.getEvaluacion() > 0.0)
.max(Comparator.comparing(Episodio::getEvaluacion));
System.out.println("\nMejor episodio:");
mejorEpisodio.ifPresent(System.out::println);
Optional peorEpisodio = episodios.stream()
.filter(e -> e.getEvaluacion() > 0.0)
.min(Comparator.comparing(Episodio::getEvaluacion));
System.out.println("\nPeor episodio:");
peorEpisodio.ifPresent(System.out::println);
System.out.println("\nEspiando el procesamiento de episodios:");
episodios.stream()
.filter(e -> e.getEvaluacion() > 0.0)
.peek(e -> System.out.println("Filtrado: " + e.getTitulo()))
.sorted(Comparator.comparing(Episodio::getEvaluacion).reversed())
.peek(e -> System.out.println("Ordenado: " + e.getTitulo() + " - " + e.getEvaluacion()))
.limit(5)
.forEach(e -> System.out.println("Top episodio: " + e.getTitulo()));
import java.util.Comparator;
import java.util.DoubleSummaryStatistics;
import java.util.Map;
import java.util.Optional;
import java.util.stream.Collectors;
System.out.println("\nTop 5 episodios:");
episodios.stream()
.filter(e -> e.getEvaluacion() > 0.0)
.sorted(Comparator.comparing(Episodio::getEvaluacion).reversed())
.limit(5)
.forEach(System.out::println);
Map<Integer, Double> evaluacionesPorTemporada = episodios.stream()
.filter(e -> e.getEvaluacion() > 0.0)
.collect(Collectors.groupingBy(
Episodio::getTemporada,
Collectors.averagingDouble(Episodio::getEvaluacion)
));
System.out.println("\nPromedio de evaluación por temporada:");
evaluacionesPorTemporada.forEach((temporada, promedio) ->
System.out.println("Temporada " + temporada + ": " + promedio));
DoubleSummaryStatistics est = episodios.stream()
.filter(e -> e.getEvaluacion() > 0.0)
.collect(Collectors.summarizingDouble(Episodio::getEvaluacion));
System.out.println("\nEstadísticas generales:");
System.out.println("Total de episodios evaluados: " + est.getCount());
System.out.println("Promedio de la serie: " + est.getAverage());
System.out.println("Mejor evaluación: " + est.getMax());
System.out.println("Peor evaluación: " + est.getMin());
System.out.println("Suma de evaluaciones: " + est.getSum());
Optional mejorEpisodio = episodios.stream()
.filter(e -> e.getEvaluacion() > 0.0)
.max(Comparator.comparing(Episodio::getEvaluacion));
Optional peorEpisodio = episodios.stream()
.filter(e -> e.getEvaluacion() > 0.0)
.min(Comparator.comparing(Episodio::getEvaluacion));
System.out.println("\nMejor episodio:");
mejorEpisodio.ifPresent(System.out::println);
System.out.println("\nPeor episodio:");
peorEpisodio.ifPresent(System.out::println);
System.out.println("\nEspiando el stream con peek:");
episodios.stream()
.filter(e -> e.getEvaluacion() > 0.0)
.peek(e -> System.out.println("Pasó filtro: " + e.getTitulo()))
.sorted(Comparator.comparing(Episodio::getEvaluacion).reversed())
.peek(e -> System.out.println("Después de ordenar: " + e.getTitulo() + " -> " + e.getEvaluacion()))
.limit(5)
.forEach(e -> System.out.println("Resultado final: " + e.getTitulo()