我是Stream的新手,我觉得应该有一种更简洁的方法来完成我在下面的任务。是否可以在单个Stream中完成以下代码的全部工作(消除底部的if / else)?
谢谢!
Optional<SomeMapping> mapping = allMappings.stream()
.filter(m -> category.toUpperCase().trim().equalsIgnoreCase(m.getCategory().toUpperCase().trim()))
.findAny();
if (mapping.isPresent()) {
return mapping.get();
} else {
throw new SomeException("No mapping found for category \"" + category + "\.");
}
如果orElseThrow
为空,则使用Optional
引发异常:
SomeMapping mapping =
allMappings.stream()
.filter(m -> category.toUpperCase().trim().equalsIgnoreCase(m.getCategory().toUpperCase().trim()))
.findAny()
.orElseThorw (() -> new SomeException("No mapping found for category \"" + category + "\."));
return mapping;