作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想知道在 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/
我正在尝试用 Swift 编写这段 JavaScript 代码:k_combinations 到目前为止,我在 Swift 中有这个: import Foundation import Cocoa e
我是一名优秀的程序员,十分优秀!