use*_*691 9 java collections optional java-8 java-stream
有什么办法可以将以下操作作为一组流操作来执行,而不是显式地检查committedProducts 是否为空,然后返回默认列表,否则返回过滤后的列表?
public List<Product> getRecommendedProducts() {
List<Product> recommendedProducts
= this.newProducts
.stream()
.filter(isAvailable)
.collect(Collectors.toList());
if (recommendedProducts.isEmpty()) {
return DEFAULT_PRODUCTS;
}
return recommededProducts;
}
Run Code Online (Sandbox Code Playgroud)
尽管您可以使用实现目标Optional,但我仍然会选择普通的三元运算符。
在这种特殊情况下,它更有意义并提高了可读性:
return recommendedProducts.isEmpty() ? DEFAULT_PRODUCTS : recommendedProducts;
Run Code Online (Sandbox Code Playgroud)
您可以尝试以下方法:
List<Product> recommendedProducts
= this.newProducts
.stream()
.filter(isAvailable)
.collect(Collectors.collectingAndThen(Collectors.toList(), list -> list.isEmpty() ? DEFAULT_PRODUCTS : list));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
122 次 |
| 最近记录: |