java - java - 篩選可選值的最小值

  显示原文与译文双语对照的内容

要獲取對象列表的函數結果的最小值,但是這個函數的返回值是可選的。如果到目前為止沒有設置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)對我很奇怪,我認為它必須有一個更好的解決方案。

时间:

要獲取對象列表的函數結果的最小值,但是這個函數的返回值是可選的。如果到目前為止沒有設置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)對我很奇怪,我認為它必須有一個更好的解決方案。

要獲取對象列表的函數結果的最小值,但是這個函數的返回值是可選的。如果到目前為止沒有設置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)對我很奇怪,我認為它必須有一個更好的解決方案。

...