Optional.ofNullable()
仅检查null
的值,而CollectionUtils.isNotEmpty()
不返回流。有没有办法结合这两个功能。
类似这样的东西-
Collection.isNotEmpty(entries)
.orElseThrow(() -> new Exception("exception"))
.stream()
代替-
Optional.ofNullable(entries)
.orElseThrow(() -> new Exception("exception"))
.stream()
答案 0 :(得分:2)
也许:
Optional.ofNullable((entries == null || entries.isEmpty()) ? null : entries)
.orElseThrow(() -> new Exception("exception"))
.stream()
答案 1 :(得分:2)
您可以简单地使用SELECT *
FROM main m full outer join sub s
ON m.MachPrice = s.MachPrices
来检查它是否为空
filter()
关于您要消除流本身中的Optional.ofNullable(entries)
.filter(e -> !e.isEmpty())
.orElseThrow(() -> new Exception("exception"))
.stream()
值的评论,可以使用以下方法:
null
答案 2 :(得分:2)
为进行比较,请考虑以下问题:
if (entries == null || entries.isEmpty()) {
throw Exception("exception");
} else {
return entries.stream();
}
(Holger在几则评论中提到了几乎相同的内容。)
我认为,在这种情况下使用Optional
并不是对常规if / else语句的改进。
答案 3 :(得分:1)
您可以通过以下方式映射到流:
Optional.ofNullable(entries)
.filter(a -> !a.isEmpty())
.orElseThrow(() -> new Exception("exception"))
// do whatever with the stream if available