簡體   English   中英

如何使用流根據枚舉類型返回布爾值 - SpringBoot

[英]How to use streams to return boolean value depending of enum type - SpringBoot

我有一個方法,我想用它來檢查在我的模型中是否存在某種類型的枚舉。 如果它存在我想返回true如果不存在我想返回false並帶有錯誤消息。

我有看起來像這樣的模型:

@Data
public class DataResponse {

    public final String userId;
    public final List<Model> modelList;

}

模型.java

@Data
public class Model {
    public final String modelId;
    public final ModelType type;
    public final ModelStatus status;
}

模型類型.java

public enum ModelType {
    Fast,
    Slow;
}

模型狀態文件

public enum ModelStatus {
    CREATED,
    FAILED
}

現在我想使用 strems 檢查我的模型是否包含"Fast"類型,如果包含狀態"CREATED"如果是,則返回true如果不返回false並帶有錯誤消息。

到目前為止,我有這個:

public Boolean isModelFastAndSuccess(String modelId){
    Optional<DataResponse> modelList = dataService.getModelStatus(modelId);
    userProofList.stream().map(ml -> ml.modelList)
            .map(models -> {
                if() 
            })
            .collect(Collectors.toList());
    }

我不知道如何完成它。 任何建議表示贊賞。

假設dataService::getModelStatus返回Optional<DataResponse> ,實現isModelFastAndSuccess的方法可能如下:

public Boolean areAllModelsFastAndSuccess(String modelId) {
    return dataService.getModelStatus(modelId) // Optional<DataResponse>
        .map(DataResponse::getModelList) // Optional<List<Model>>
        .orElse(Collections.emptyList()) // List<Model>
        .stream() // Stream<Model>
        .allMatch(model -> model.getType() == ModelType.Fast 
                        && model.getStatus() == ModelStatus.CREATED
        );
}

此外,如果至少有一個Fast / Created模型,則可以實現一種方法以返回true

public Boolean isAnyModelFastAndSuccess(String modelId) {
    return dataService.getModelStatus(modelId) // Optional<DataResponse>
        .map(DataResponse::getModelList) // Optional<List<Model>>
        .orElse(Collections.emptyList()) // List<Model>
        .stream() // Stream<Model>
        .anyMatch(model -> model.getType() == ModelType.Fast 
                        && model.getStatus() == ModelStatus.CREATED
        );
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM