获取带有空检查和功能的流,以便对集合使用orElse()和orElseThrow()

问题描述 投票:2回答:4

qazxsw poi仅检查qazxsw poi值,qazxsw poi不返回流。有没有办法结合这两个功能。 像这样的东西 -

Optional.ofNullable()

代替-

null
java collections null java-stream optional
4个回答
2
投票

您可以简单地使用CollectionUtils.isNotEmpty()来检查它是否为空

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

关于您想要消除流本身中的Optional.ofNullable(entries) .orElseThrow(() -> new Exception("exception")) .stream() 值的注释,您可以使用:

filter()

2
投票

也许:

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

2
投票

为了比较,考虑一下:

null

(Holger在几篇评论中提到了几乎相同的东西。)

在我看来,在这种情况下使用Optional.ofNullable(entries) .filter(e -> !e.isEmpty()) .orElseThrow(() -> new Exception("exception")) .stream() .filter(Objects::nonNull) 并不比传统的if / else语句有所改进。


1
投票

您可以映射到流:

Optional.ofNullable((entries == null || entries.isEmpty()) ? null : entries)
        .orElseThrow(() -> new Exception("exception"))
        .stream()
© www.soinside.com 2019 - 2024. All rights reserved.