Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Utilização do flatMap()

Eu tenho notado que quando utiliza o flapMap eu perco a referência de qual temporada, tal episódio pertence.

Eu gostaria que o resultado retornasse uma saída do tipo, os tops 5 episódios, mas que ao mesmo tempo me apontasse a qual temporada esse episódio pertence. Como eu faria?

1 resposta
solução!

Oi Bruno! Como vai?

Uma maneira de resolver isso é criando uma classe que contenha tanto os dados do episódio quanto a informação da temporada. Assim, você não perde a referência ao transformar suas listas.

Aqui está uma sugestão de como você pode fazer isso:

  1. Crie uma nova classe que inclua tanto os dados do episódio quanto a temporada. Por exemplo:
public class EpisodioComTemporada {
    private DadosEpisodio episodio;
    private int temporada;

    public EpisodioComTemporada(DadosEpisodio episodio, int temporada) {
        this.episodio = episodio;
        this.temporada = temporada;
    }

    public DadosEpisodio getEpisodio() {
        return episodio;
    }

    public int getTemporada() {
        return temporada;
    }

    @Override
    public String toString() {
        return "Temporada " + temporada + ": " + episodio.toString();
    }
}
  1. Modifique seu fluxo de stream para utilizar essa nova classe:
List<EpisodioComTemporada> dadosEpisodios = temporadas.stream()
    .flatMap(t -> t.episodios().stream()
        .map(e -> new EpisodioComTemporada(e, t.getNumero())))
    .collect(Collectors.toList());

System.out.println("\n Top 5 episódios");
dadosEpisodios.stream()
    .filter(e -> !e.getEpisodio().avaliacao().equalsIgnoreCase("N/A"))
    .sorted(Comparator.comparing(e -> e.getEpisodio().avaliacao(), Comparator.reverseOrder()))
    .limit(5)
    .forEach(System.out::println);

Com essa abordagem, você mantém a referência da temporada com os dados do episódio, permitindo que você identifique facilmente a qual temporada um episódio pertence ao listar os top 5.

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.