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