如何在1行中用java8编写此代码?
if (Optional.ofNullable(mapOfIntAndListOfObjects.get(spn)).isPresent()) {
Date paydate = Optional.ofNullable(mapOfIntAndListOfObjects.get(spn).stream().findFirst()).get().orElse(new MyObject()).getPayDate();
logger.info("paydate {} ", paydate);
return paydate;
}
return null;
答案 0 :(得分:3)
类似
Date payDate = mapOfIntAndListOfObjects.getOrDefault(spn, Collections.emptyList())
.stream()
.findFirst()
.orElse(new MyObject())
.getPayDate();
logger.info("paydate {} ", paydate);
return payDate;
您似乎实际上并不需要将它们包装在Optional
周围。
答案 1 :(得分:1)
尝试一下:
return Optional.ofNullable(mapOfIntAndListOfObjects.getOrDefault(spn))
.map(List::stream)
.map(Stream::findFirst)
.map(MyObject::getPayDate)
.orElse(null); // or whatever default to return in case nothing found
完全按预期使用Optional
功能。即在任何地方都不需要默认列表/值(除了在找不到任何内容时选择返回的内容)。