You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Perceba que, mesmo que o _Stream_ aparentemente tenha sido criado antes de adicionar o número 4 na lista, ele imprime esse número no console. Isso acontece porque o _Stream_ só foi criado de fato quando alguma operação foi feita nele, ou seja, quando o `forEach` foi invocado.
386
+
387
+
. É possível encadear a operação final do _Stream_ utilizando expressões lambda na classe ``Optional``.
Perceba que o método `ifPresent` é da classe `Optional`, mesmo que no segundo exemplo possa parecer que ele faz parte do __Stream__. Em outras palavras, a operação final é `max`, e `ifPresent` é uma chamada em `Optional` e não mais no __Stream__.
347
396
348
397
===== Execução sob-demanda (__lazy__)
349
398
350
-
<Explicação>
399
+
As operações intermediárias de um _Stream_ só são executadas quando necessário. Ou seja, mesmo que a operação esteja presente no __pipeline__, não é certeza de que ela será executada.
400
+
401
+
. Nada será feito se o _Stream_ não contiver uma operação final.
Nesse caso nada é impresso no console, pois *nenhuma* operação *final* foi aplicada no __Stream__. Ou seja, se não há nada consumindo o resultado desse __Stream__, o Java nem precisa executar o _pipeline_ criado.
351
410
352
-
. Exemplos de lazy
411
+
. Outras operações intermediárias também não costumam ser executadas se não for necessário.
Perceba que, mesmo que a operação `peek` esteja antes da operação `limit`, ela não é executada para todos os elementos do ``Stream``, apenas para aqueles que serão realmente utilizados.
0 commit comments