Предположим, что мне нужно применить некоторую функцию к каждому элементу потока, пока не будет выполнено определенное условие.Однако, чтобы проверить условие, мне нужно применить функцию, поэтому разделение на takeWhile
и forEachOrdered
не будет работать.Например,
stream.map(...).takeWhile(p -> {
try {
write(p);
return true;
} catch (IOException e) {
log(e.getMessage());
return false;
}
});
Здесь я не хочу многократный сбой log
, поэтому после сбоя write
я бы хотел прекратить итерации.
У меня есть сомнениячто это правильное (?) решение, потому что результат takeWhile
не используется и просто избыточен.
Есть ли лучший способ справиться с ситуацией?Мое решение на самом деле хорошо?