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);
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
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);
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>.