Инклюзивный takeWhile() для потоковJAVA

Программисты JAVA общаются здесь
Anonymous
Инклюзивный takeWhile() для потоков

Сообщение Anonymous »

Я хочу знать, есть ли способ добавить последний элемент потока, который был проверен на соответствие условию метода takeWhile(). Я считаю, что хочу добиться чего-то похожего на метод takeUntil() в RxJava.
Я предполагаю, что нет прямого способа сделать это (поправьте меня, если я ошибаюсь), но я хотел бы знать, есть ли подходящий обходной путь для достижения этой цели, о котором я теперь знаю.
Я искал в Stack Overflow практически безуспешно. Если вы думаете, что есть потоки, которые могли бы решить мои проблемы, я бы определенно хотел их увидеть.
Если вы посмотрите на peek() в следующем коде, вы увидите, что число 5 проверяется на соответствие условию takeWhile(), но никогда не попадает в forEach():

Код: Выделить всё

IntStream.of(1, 3, 2, 5, 4, 6)
.peek(foo -> System.out.println("Peek: " + foo))
.takeWhile(n -> n < 5)
.forEach(bar -> System.out.println("forEach: " + bar));
Ожидаемым результатом является то, что последний элемент, проверенный на соответствие условию takeWhile, достигнет System.out::println forEach. В данном случае это 5.
Спасибо всем!

Вернуться в «JAVA»