Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
1
respuesta

Haga lo que hicimos: generación de estadísticas

Implementé la generación de estadísticas en mi aplicación usando Streams.

Primero calculé la media de evaluaciones por temporada agrupando con groupingBy y averagingDouble, filtrando antes las evaluaciones mayores a 0.0.

Luego utilicé DoubleSummaryStatistics con Collectors.summarizingDouble() para obtener:

  • La media general de la serie
  • El episodio mejor evaluado
  • El episodio peor evaluado
  • El total de episodios evaluados

También usé peek() dentro del stream para observar cómo se iban procesando los datos en cada etapa (filtrado y mapeo), lo que me ayudó a entender mejor el flujo y depurar el comportamiento.

Así logré generar estadísticas completas de forma limpia, eficiente y encadenando operaciones con Streams.

1 respuesta

¡Hola Estudiante, espero que estés bien!

Parece que estás en buen camino con la implementación de estadísticas usando Streams en Java. Has mencionado que calculaste la media de evaluaciones por temporada y utilizaste DoubleSummaryStatistics para obtener varias estadísticas. Aquí tienes un pequeño resumen de cómo podrías estructurar tu código para asegurarte de que estás cubriendo todos los puntos:

  1. Media de evaluaciones por temporada:

    Map<Temporada, Double> mediaPorTemporada = evaluaciones.stream()
        .filter(e -> e.getNota() > 0.0)
        .collect(Collectors.groupingBy(Evaluacion::getTemporada, Collectors.averagingDouble(Evaluacion::getNota)));
    
  2. Estadísticas generales de la serie:

    DoubleSummaryStatistics estadisticas = evaluaciones.stream()
        .mapToDouble(Evaluacion::getNota)
        .summaryStatistics();
    
    double mediaGeneral = estadisticas.getAverage();
    double mejorEvaluado = estadisticas.getMax();
    double peorEvaluado = estadisticas.getMin();
    long totalEvaluados = estadisticas.getCount();
    
  3. Uso de peek() para depuración:

    evaluaciones.stream()
        .peek(e -> System.out.println("Antes de filtrar: " + e))
        .filter(e -> e.getNota() > 0.0)
        .peek(e -> System.out.println("Después de filtrar: " + e))
        .collect(Collectors.toList());
    

El uso de peek() es una excelente manera de ver cómo se procesan los datos en cada etapa, lo que puede ser muy útil para depurar y entender mejor el flujo de datos en tus Streams.

Espero que este resumen te sea útil y te ayude a avanzar en tu proyecto. ¡Espero haber ayudado y buenos estudios!