我有这样的旧式代码:
if (setContainer.getSet() == null) {
return null;
}
for (SetElement setElement : setContainer.getSet()){
if ("SomeString".equals(SetElement.getCode())) {
return setElement.getValue();
}
}
return null;
我已经尝试过这个,但它不会检查 Set 是否为空:
setContainer.getSet()
.stream()
.filter(setValue -> "SomeValue".equals(setElement.getCode()))
.map(SetElement::getValue)
.findAny()
.orElse(null) ;
据我了解,我应该使用Stream.of()
但我不明白如何执行上面的代码,因为它总是返回 Optional<Set<SetElement>>
最佳答案
您可以使用Optional.ofNullable
实现这一目标:
return Optional.ofNullable(setContainer.getSet())
.flatMap(set -> set.stream()
.filter(e -> "SomeValue".equals(e.getCode()))
.map(SetElement::getValue)
.findAny())
.orElse(null);
关于Java Stream : how to pass Set to Stream. of() 并在每个元素上调用方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42071868/