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

Visualizar el mejor(es) y peor(es) título(s)

Le agregué la parte donde se puede visualizar:

  • La información del mejor o mejores episodios.
  • La información del peor o peores episodios.
        Map<Integer, Double> evaluacionesTemporada = episodios
                .stream()
                .filter(e -> e.getEvaluacion() > 0.0)
                .collect(Collectors.groupingBy(Episodio::getTemporada, Collectors.averagingDouble(Episodio::getEvaluacion)));
        System.out.println(evaluacionesTemporada);


        DoubleSummaryStatistics est = episodios
                .stream()
                .filter(e -> e.getEvaluacion() > 0.0)
                .collect(Collectors.summarizingDouble(Episodio::getEvaluacion));

        System.out.println("Media de las evaluaciones: " + est.getAverage());
        System.out.println("Episodio mejor evaluado: " + est.getMax());
        System.out.println("Episodio peor evaluado: " + est.getMin());

        List<Episodio> mejoresEpisodio = episodios
                .stream()
                .filter(e -> e.getEvaluacion() == est.getMax())
                .collect(Collectors.toList());


        List<Episodio> peoresEpisodio = episodios
                .stream()
                .filter(e -> e.getEvaluacion() == est.getMin())
                .collect(Collectors.toList());


        System.out.println("Mejor(es) episodio(s): ");
        mejoresEpisodio.forEach(System.out::println);

        System.out.println();

        System.out.println("Peor(es) episodio(s): ");
        peoresEpisodio.forEach(System.out::println);

Si queremos que nos devuelva sólo un título para mejor y peor, le agregamos el .limit(1).

        List<Episodio> mejoresEpisodio = episodios
                .stream()
                .filter(e -> e.getEvaluacion() == est.getMax())
                .limit(1)
                .collect(Collectors.toList());


        List<Episodio> peoresEpisodio = episodios
                .stream()
                .filter(e -> e.getEvaluacion() == est.getMin())
                .limit(1)
                .collect(Collectors.toList());

Resultado con limite de 1: Muestra sólo un título para mejor y otro para peor

Resultado sin límite: Muestra varios títulos para mejor y peor

1 respuesta

Hola Juan Carlos como estas?

Me gustó mucho la idea de implementar ese filtro, excelente resultado y uso de streams :D

Muchas gracias por compartir tus resultados, caso tengas alguna duda estaremos aquí para ayudarte.

Si este post te ayudó, por favor, marca como solucionado ✓. Continúa con tus estudios!