gpt4 book ai didi

java - 在流中使用可选

转载 作者:行者123 更新时间:2023-12-02 00:05:25 25 4
gpt4 key购买 nike

我想知道在 Java 8 中使用流时是否有比我通常使用的替代方法来过滤和展开可选。

这里是一些代码片段,在生成一些 markdown 时使用可选作为文件错误处理的一部分,这可能会因 IO 异常而失败,我正在使用失败列表进行处理。

files.stream()
.map(f -> {
try {
return Optional.of(generateMarkdown(f));
} catch (IOException e) {
failed.add(f);
}
return Optional.<Markdown>empty();
})
.filter(o -> o.isPresent())
.map(o -> o.get())
.forEach(h -> { ...

是否有更好的方法来编写 .filter.map 行,或者重写 .map block 而不需要它们?

最佳答案

使用提供的答案 shmosel很简洁。然而,对于 Java 8 和 9+ 有许多有趣的答案,参见 "Using Java 8's Optional with Stream::flatMap" .

重写后的代码如下所示:

files.stream()
.map(f -> {
try {
return generateMarkdown(f);
} catch (IOException e) {
failed.add(f);
}
return null;
})
.filter(Objects::nonNull)
.forEach(h -> { ...

关于java - 在流中使用可选,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58159991/

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