繁体   English   中英

java 8 个流中的 For 循环

[英]For loop in java 8 streams

我想用 Java 的 8 Stream 转换下面的代码。 我是流的新手。 请帮助改进此代码。

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;

谢谢

首先,使用stream()将您的列表转换为 stream 。 然后,使用map()方法,您可以使用其他类型创建新的 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());

只是,比如我不知道你想在错误列表中添加什么时,它会返回 null。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM