[英]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.