Método peek
out.println("\nTop 10 episódios");
dadosEpisodios.stream()
.filter(e -> !e.avaliacao().equalsIgnoreCase("N/A"))
.peek(e -> out.println("Primeiro filtro (N/A) " + e))
.sorted(Comparator.comparing(DadosEpisodio::avaliacao).reversed())
.peek(e -> out.println("Ordenação " + e))
.limit(10)
.peek(e -> out.println("Limite " + e))
.map(e -> e.titulo().toUpperCase())
.peek(e -> out.println("Mapeamento " + e))
.forEach(out::println);
List<Episodio> episodios = temporadas.stream()
.flatMap(t ->t.episodios().stream()
.map(d ->new Episodio(t.numero(), d))
).collect(Collectors.toList());
episodios.forEach(out::println);
Estatísticas de média de avaliações por temporada e Classe DoubleSummaryStatistics.
Map<Integer, Double> avaliacoesPorTemporada = episodios.stream()
.filter(e -> e.getAvaliacao() > 0.0)
.collect(Collectors.groupingBy(Episodio::getTemporada,
Collectors.averagingDouble(Episodio::getAvaliacao)));
System.out.println(avaliacoesPorTemporada);
DoubleSummaryStatistics est = episodios.stream()
.filter(e -> e.getAvaliacao() > 0.0)
.collect(Collectors.summarizingDouble(Episodio::getAvaliacao));
out.println("Média: " + est.getAverage());
out.println("Melhor episódio: " + est.getMax());
out.println("Pior episodio: " + est.getMin());
out.println("Quantidade: " + est.getCount());
}
}