It is possible to find the first element of a Stream
that matches a condition.
For this example, we will find the first Integer
whose square is over 50000
.
IntStream.iterate(1, i -> i + 1) // Generate an infinite stream 1,2,3,4...
.filter(i -> (i*i) > 50000) // Filter to find elements where the square is >50000
.findFirst(); // Find the first filtered element
This expression will return an OptionalInt
with the result.
Note that with an infinite Stream
, Java will keep checking each element until it finds a result. With a finite Stream
, if Java runs out of elements but still can't find a result, it returns an empty OptionalInt
.