获取带有空的支票和功能的流以使用ORELSE()和ORELESETHROW()进行集合



Optional.ofNullable()仅检查null值,而CollectionUtils.isNotEmpty()不返回流。有没有办法将这两个功能结合在一起。

类似的东西 -

Collection.isNotEmpty(entries)
                .orElseThrow(() -> new Exception("exception"))
                .stream()

而不是 -

Optional.ofNullable(entries)
                .orElseThrow(() -> new Exception("exception"))
                .stream()

进行比较,请考虑以下内容:

if (entries == null || entries.isEmpty()) {
    throw Exception("exception");
} else {
    return entries.stream();
}

(Holger在几个评论中都提到了几乎相同的事情。)

我认为,如果/else语句,使用Optional对这种情况并不是对常规的改进。

您可以简单地使用filter()检查它不是空

Optional.ofNullable(entries)
    .filter(e -> !e.isEmpty())
    .orElseThrow(() -> new Exception("exception"))
    .stream()

关于您要消除流本身中null值的评论,您可以使用以下方式:

Optional.ofNullable(entries)
    .filter(e -> !e.isEmpty())
    .orElseThrow(() -> new Exception("exception"))
    .stream()
    .filter(Objects::nonNull)

也许:

Optional.ofNullable((entries == null || entries.isEmpty()) ? null : entries)
        .orElseThrow(() -> new Exception("exception"))
        .stream()

您可以将流映射到:

Optional.ofNullable(entries)
        .filter(a -> !a.isEmpty())
        .orElseThrow(() -> new Exception("exception"))
        // do whatever with the stream if available

相关内容

  • 没有找到相关文章

最新更新