Então, o Stream ele pega os itens da lista para usar e o .map está percorrendo essa sequência que o stream criou?
Então, o Stream ele pega os itens da lista para usar e o .map está percorrendo essa sequência que o stream criou?
Um stream representa uma sequência de elementos
List<String> myList =
Arrays.asList("a1", "a2", "b1", "c2", "c1");
myList
.stream()
.filter(s -> s.startsWith("c"))
.map(String::toUpperCase)
.sorted()
.forEach(System.out::println);
As operações feitas no stream podem ser intermediárias ou terminais. As operações intermediárias retornam um novo Stream para que possamos encadear várias operações intermediárias sem usar ponto e vírgula. As operações terminaais geralmente retornam um resultado que não é um novo Stream. No exemplo acima filter, map sorted são operações intermediárias enquanto que forEach é uma operação terminal.
A maioria dos métodos de Stream aceitam algum tipo de parâmetro de expressão lambda, uma interface funcional que especifica o comportamento exato da operação.