Я ищу «промежуточную проверку условия» в цепочке потоков Java.
Меня вдохновляет Reactor (Spring Webflux), где я могу написать это:
public Mono interimConditionCheckMono(Flux input) {
return input
.filter(s -> s.startsWith("A"))
.switchIfEmpty(Mono.error(() -> new IllegalArgumentException("No string starts with 'A'")))
.filter(s -> s.length() > 10)
.switchIfEmpty(Mono.error(() -> new IllegalArgumentException("No string is long enough")))
.next();
}
И мне интересно, возможна ли аналогичная конструкция в цепочке потоков Java, примерно так:
public String interimConditionCheckStream(Collection input) {
return input.stream()
.filter(s -> s.startsWith("A"))
// Here I want to trow an exception if no string starts with 'A'
.filter(s -> s.length() > 10)
.findAny()
.orElseThrow(() -> new IllegalArgumentException("No string is long enough"));
}
Подробнее здесь: https://stackoverflow.com/questions/790 ... ava-stream