Это легко, используя java-9 takeWhile
, поэтому, когда условие (s <1) не выполняется, он отбрасывает оставшуюся часть потока <a href="https://blog.indrek.io/articles/whats-new-in-java-9-streams/" rel="nofollow noreferrer"> здесь
, когдаОбнаружен элемент, который не соответствует предикату, остальная часть потока отбрасывается.
s.takeWhile(s -> s < 1).forEach(System.out::println);
При использовании java-8 пробовал пример, но это не каждый эффективен, как takeWhile
,объединяя peek
и findFirst()
, но необходимо иметь условие двойной проверки, которое не имеет смысла, а не этого, я предпочитаю стандартное, в то время как цикл
IntStream.range(0, 5).peek(i->{
if(i<3) {
System.out.println(i);
}
}).filter(j->j>=3).findFirst();
выполняет действие в режиме просмотра и поток прерывается при проверке предикатав findFirst