Skip to content

Commit d253725

Browse files
committed
refactor(using-streams): explicação sobre Optional
Adicionando duas explicações adicionais sobre a utilização de Optional nas operações min, max, findAny e findFirst. Ref. Issue #23
1 parent f850bbb commit d253725

File tree

1 file changed

+4
-0
lines changed

1 file changed

+4
-0
lines changed

book/05-java-streams/sections/01-using-streams.asc

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -280,6 +280,8 @@ Count: 8
280280
----
281281
+
282282
No caso das operações `max` e `min`, é necessário passar como argumento qual comparador será utilizado. Como os números possuem uma ordem natural, isto é, implementam a interface `Comparable`, é possível utilizar um comparador que usa essa ordem natural, que é o `Comparator.naturalOrder()`. Caso seja um tipo de objeto que não possui uma ordem natural, é necessário passar como argumento uma outra implementação de `Comparator`.
283+
+
284+
As operações `max` e `min` retornam `Optional` pois, caso o _Stream_ esteja vazio, será um `Optional` vazio. Desde o Java 8, com a adição da classe `Optional`, isso tem sido preferido ao invés de retornar `null`, pois facilita a programação funcional. A operação `count` não precisa de um `Optional`, pois mesmo com um _Stream_ vazio irá retornar `0`.
283285

284286
. É possível pegar o primeiro elemento do Stream utilizando a operação final `findFirst`, ou um elemento qualquer com `findAny`.
285287
+
@@ -297,6 +299,8 @@ Any: 7
297299
----
298300
+
299301
Nesse caso, como o _Stream_ é sequencial e não paralelo, os dois resultados são iguais. Em _Streams_ paralelos, que serão apresentados em uma próxima seção, a operação `findAny` pode trazer resultados diferentes.
302+
+
303+
Assim como as operações `max` e `min` apresentadas anteriormente, `findAny` e `findFirst` retornam um `Optional` vazio caso o _Stream_ esteja vazio.
300304

301305
. É possível verificar se os elementos do _Stream_ atendem a alguma validação utilizando as operações finais `allMatch`, `anyMatch` e `noneMatch`.
302306
+

0 commit comments

Comments
 (0)