3
respostas

[Dúvida] Flatmap

Olá, pessoal!

Não entendi mto bem como funciona o flatmap, poderiam me explicar melhor?

3 respostas

Oi, Miguel! Tudo bem?

O flatMap é um método da interface Stream do Java que é usado para "achatar" uma estrutura de dados complexa em uma estrutura mais simples. No contexto do curso, temos uma série que contém várias temporadas e cada temporada tem uma lista de episódios, o objetivo é transformar essa estrutura complexa em uma única lista de episódios, para ficar mais fácil de percorrer esses dados.

Imagine que cada temporada é uma caixa e dentro de cada caixa temos várias bolinhas (que representam os episódios). O que o flatMap faz é pegar todas essas caixas, abri-las e colocar todas as bolinhas em uma única caixa grande. Assim, em vez de termos que lidar com várias caixas pequenas (ou seja, várias listas de episódios), temos apenas uma grande caixa (ou seja, uma única lista de episódios).

No código do curso, isso é feito da seguinte maneira:

List<DadosEpisodio> dadosEpisodios = temporadas.stream()
            .flatMap(t -> t.episodios().stream())
            .collect(Collectors.toList());

Aqui, temporadas.stream() cria um fluxo de dados das temporadas, o método flatMap é então chamado nesse fluxo, o que transforma cada temporada em um fluxo de seus episódios. O resultado é um único fluxo que contém todos os episódios de todas as temporadas. Por fim, collect(Collectors.toList()) é usado para coletar esses episódios em uma única lista.

Espero ter ajudado!

Um forte abraço e bons estudos!

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

Oi, Sarah! Muito obrigado pela explicação :)

Mas só para confirmar se entendi: com o flatmap eu consigo acessar uma coleção dentro de uma coleção, que no fim se torna uma coleção só. Seria isso?

Pelo que entendi, no contexto do curso, o flatmap estaria tirando o todos os episodio de cada temporada e colocando em uma única lista, assim ficaria melhor em tratar as avaliações dos episódios.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software