要获取对象列表的函数结果的最小值,但是这个函数的返回值是可选的。如果到目前为止没有设置fragment时间,返回值应该是Optional.empty()
public Optional<Double> getFragmentTime(int fragment) {
...
}
private List<Entry> entries; // will be filled in the ctor.
public Optional<Double> getMinFragmentTime(int fragment) {
return entries.stream()
.map(e -> e.getFragmentTime(fragment))
.filter(Optional::isPresent)
.map(Optional::get)
.min(Double::compare);
}
这是正确的归档方式?这两个函数调用.filter(Optional.isPresent)
和.map(Optional.get)
对我很奇怪,我认为它必须有一个更好的解决方案。