С Java 8+ вы можете легко найти все элементы коллекции, соответствующие Predicate
.
someCollection.stream().filter(somePredicate)
Затем вы можете найти первый элемент:
someCollection.stream().filter(somePredicate).findFirst()
Однако проблема в том, что он запускает Predicate
для всех элементов. Есть ли чистый способ запускать Predicate
только для элементов до тех пор, пока не будет найдено первое совпадение, а затем возвращать его, как это делает anyMatch
(но возвращает boolean
, сообщая, если он был найден)?