# Finding the First Element that Matches a Predicate

suggest changeIt 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`

.

Found a mistake? Have a question or improvement idea?
Let me know.

Table Of Contents