1
resposta

map no lugar do mapToInt funcionaria?

cursos.stream() .mapToInt(c -> c.getAlunos()) .average();

O trecho acima funcionaria se fosse apenas map no lugar do mapToInt?

1 resposta

Olá César,

Não daria certo, pois map vai retornar um Stream, que não possui o método average, portanto o compilador já acusaria um erro na chamada do average, dizendo que o método não está definido.

Já o mapToInt devolve um IntStream, que possui o método average, por isso o código do exemplo funciona.

Pensando um pouco na motivação, o IntStream já sabe que o fluxo se dá em valores numéricos inteiros, por isso um método pra calcular a média faz sentido.

No caso do do Stream padrão, não há como saber que o fluxo se dará em uma coleção onde é possível realizar cálculos aritméticos. Por isso o método average nem está disponível.

Abs