gpt4 book ai didi

java - 在可选列表列表中查找字符串

转载 作者:行者123 更新时间:2023-12-03 01:01:52 25 4
gpt4 key购买 nike

我有一个可能为空的“ block ”列表。每个 block 都包含一个名称列表,这些名称也可以为空。我正在尝试查找所有 block 中是否有任何名称是单词“blurb”。

我有以下有效的代码:

private boolean containsText(List<Blocks> blocks) {
return Optional.ofNullable(blocks)
.map(Collection::stream)
.map(o -> o.map(Blocks::getNames))
.map(e -> e.anyMatch(names -> names != null && names.contains("blurb")))
.orElse(false);
}

但是由于 getNames 可能返回 null,我必须在下一个语句中检查它。那时我可以将它包装在另一个可选中,但最终我会得到一个 Optional<Stream<Optional<List<String>>>>

使用names -> names != null看起来更干净?或者有没有办法简化这个?

最佳答案

通过 Java-9,您可以使用 Stream.ofNullable,如下所示:

public boolean containsText(List<Blocks> blocks) {
return Stream.ofNullable(blocks)
.flatMap(b -> b.stream().map(Blocks::getNames).filter(Objects::nonNull))
.anyMatch(s -> s.contains("blurb"));
}

关于java - 在可选列表列表中查找字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60404843/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com