2
respostas

Dúvida e indicação de conteúdo sobre stream()

Ao tentar realizar a listagem de médicos, procurei antes tentar destrinchar o stream na documentação para tentar usá-lo, mas (como quase sempre) achei a documentação muito complicada de se entender.

Acabou saindo isso aqui:

@GetMapping
    public List<DadosListagemMedico> listar(){
        return repository.findAll().stream().map(DadosListagemMedico.class, new DadosListagemMedico());
    }

Tem como eu continuar dessa forma? Pois na documentação do map ele pede dois argumentos, só que fiquei travado em como passar os argumentos. Além disso, possui algum material aqui na Alura que explique stream() de forma mais simplificada que na documentação?

2 respostas

Ok, eu me confundi, na verdade é apenas um parâmetro chamado "mapper - a non-interfering, stateless function to apply to each element". Mas não entendi bem o que seria uma non-interfering, stateless function.

@GetMapping
    public List<DadosListagemMedico> listar(){
        return repository.findAll()
                .stream()
                .map(medico -> new DadosListagemMedico(medico.getNome(), medico.getEmail(), medico.getCrm(), medico.getEspecialidade()))
                .collect(Collectors.toList());
    }

Vi que posso utilizar uma função lambda, que eu até entendi o que ela faz, mas não sei utilizar ainda porque ainda não estudei sobre. Tem como eu passar esse parâmetro como uma função de alguma classe? Algo como por exemplo DadosListagemMedicosMapper.mapper()?

Oi!

Você pode aprender mais sobre os novos recursos do Java 8 nesse curso: https://cursos.alura.com.br/course/java8-lambdas

Está desativado, mas ainda sim você consegue assistir as aulas.