1
resposta

Duvida

Quero saber para que serve a transformação de Stream<curso> para Stream<string> nesse caso?

E como isso acontece nesse trecho de código:

Stream<String> nomes = cursos.stream().map(Curso::getNome);
1 resposta

Imagine que a gente tem na mão um monte de Cursos mas queremos um monte de Nomes de Cursos. É isso que estamos fazendo. Nosso stream original é do tipo Curso mas como o nome é apenas uma String, queremos no fim uma Stream<String>.

O que o map faz é percorrer o Stream e aplicar uma certa transformação em cada item. No caso estamos aplicando Curso::getNome que significa que ele vai chamar o método .getNome() em cada Curso. Como o getNome devolve o nome de cada curso que é uma String, a Stream final acaba sendo Stream<String>.