如何将for循环转换为Stream并在中间中断它



我如何将以下代码转换为流格式,尝试过filter、foreach和map,但仍然有问题。

private Status validate(final Type type, final String id) {
for(Validator validator : validators) {
Status status = validator.validate(type, id);
if (status == Status.INVALID || status == Status.VALID) {
return status;
}
}
return Status.UNKNOWN;
}

让我们分解这个循环。您首先检查所有的验证器并调用validate——这是一个map操作。如果statusINVALIDVALID,则返回它——这是具有findFirst逻辑的filter操作。如果找不到,则返回UNKNOWN——这是一个orElse操作。综合起来:

private Status validate(final Type type, final String id) {
return validators.stream()
.map(v -> v.validate(type, id))
.filter(s -> s == Status.INVALID || s == Status.VALID)
.findFirst()
.orElse(Status.UNKNOWN);
}

相关内容

最新更新