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

Map<Integer, Double> evaluacionesPorTemporada = episodios.stream()
.filter(e -> e.getEvaluacion() > 0)
.collect(Collectors.groupingBy(Episodio::getTemporada,
Collectors.averagingDouble(Episodio::getEvaluacion)));
System.out.println(evaluacionesPorTemporada);

    //Calcular estadísticas de las evaluaciones de los episodios
    DoubleSummaryStatistics est = episodios.stream()
            .filter(e -> e.getEvaluacion() > 0)
            .collect(Collectors.summarizingDouble(Episodio::getEvaluacion));
    System.out.println("Media " + est.getAverage());
    System.out.println("Mejor episódio: " + est.getMax());
    System.out.println("Peor episódio: " + est.getMin());
    System.out.println("Cantidad " + est.getCount());
1 respuesta

¡Hola Yolima, espero que estés bien!

Parece que estás trabajando con lambdas, streams y el Spring Framework para generar estadísticas de evaluaciones de episodios. Por lo que veo en tu código, ya has logrado agrupar y calcular la media de evaluaciones por temporada y también has utilizado DoubleSummaryStatistics para obtener estadísticas generales de las evaluaciones.

Aquí tienes algunas sugerencias para asegurarte de que estás en el camino correcto:

  1. Agrupación por Temporada: Tu código para agrupar las evaluaciones por temporada y calcular la media parece estar bien. Estás utilizando Collectors.groupingBy y Collectors.averagingDouble, lo cual es correcto para este propósito.

    Map<Integer, Double> evaluacionesPorTemporada = episodios.stream()
        .filter(e -> e.getEvaluacion() > 0)
        .collect(Collectors.groupingBy(Episodio::getTemporada,
                Collectors.averagingDouble(Episodio::getEvaluacion)));
    System.out.println(evaluacionesPorTemporada);
    
  2. Estadísticas Generales: También estás utilizando DoubleSummaryStatistics correctamente para obtener la media, el máximo, el mínimo y la cantidad de evaluaciones.

    DoubleSummaryStatistics est = episodios.stream()
        .filter(e -> e.getEvaluacion() > 0)
        .collect(Collectors.summarizingDouble(Episodio::getEvaluacion));
    System.out.println("Media " + est.getAverage());
    System.out.println("Mejor episodio: " + est.getMax());
    System.out.println("Peor episodio: " + est.getMin());
    System.out.println("Cantidad " + est.getCount());
    
  3. Uso de peek: Si aún no lo has hecho, podrías experimentar con el método peek para ver cómo fluyen los datos a través de tu stream. peek es útil para depuración, ya que te permite "espiar" los elementos mientras pasan por el stream.

    episodios.stream()
        .filter(e -> e.getEvaluacion() > 0)
        .peek(e -> System.out.println("Procesando episodio: " + e))
        .collect(Collectors.summarizingDouble(Episodio::getEvaluacion));
    

Espero que estas sugerencias te sean útiles para completar la actividad. ¡Sigue practicando y experimentando con las operaciones encadenadas de streams!

Espero haber ayudado y buenos estudios!