[英]For loop in java 8 streams
I would like to convert below code with Java's 8 Stream.我想用 Java 的 8 Stream 转换下面的代码。 I'm new to streams.
我是流的新手。 Please help to improve this code.
请帮助改进此代码。
List<ValidationErrorResult> errors = new ArrayList<>();
for(String stageKey : stage.getParentStages()){
// get stage from db
Stage dbStage = stageService.getStageByKey(stageKey);
//comparing enum
if(!StageType.DEV.name().equals(dbStage.getType().name())){
errors.add(ValidationErrorResult.builder().validationError(StageValidationError.DEV_STAGE_VALIDATION).build());
} else if(!StageType.TEST.name().equals(dbStage.getType().name())){
errors.add(ValidationErrorResult.builder().validationError(StageValidationError.TEST_STAGE_PARENT_ENV_VALIDATION).build());
}
}
return errors;
Thanks谢谢
Firstly, convert your list to stream with stream()
.首先,使用
stream()
将您的列表转换为 stream 。 Then, with map()
method, you can create new stream with others type.然后,使用
map()
方法,您可以使用其他类型创建新的 stream。
At the end, I used Collectors.toList()
to convert it as basic list, and "end" the stream.最后,我使用
Collectors.toList()
将其转换为基本列表,并“结束” stream。
return stage.getParentStages().stream().map(stageService::getStageByKey).map((dbStage) -> {
if(!StageType.DEV.name().equals(dbStage.getType().name())){
return ValidationErrorResult.builder().validationError(StageValidationError.DEV_STAGE_VALIDATION).build());
} else if(!StageType.TEST.name().equals(dbStage.getType().name())){
return ValidationErrorResult.builder().validationError(StageValidationError.TEST_STAGE_PARENT_ENV_VALIDATION).build());
}
return null;
}).collect(Collectors.toList());
Just, such as I didn't know what you would like to do when you don't add something in errors list, it return null.只是,比如我不知道你想在错误列表中添加什么时,它会返回 null。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.