cursos.stream() .mapToInt(c -> c.getAlunos()) .average();
O trecho acima funcionaria se fosse apenas map no lugar do mapToInt?
cursos.stream() .mapToInt(c -> c.getAlunos()) .average();
O trecho acima funcionaria se fosse apenas map no lugar do mapToInt?
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