gpt4 book ai didi

java - 同时过滤和映射一个java流

转载 作者:搜寻专家 更新时间:2023-11-01 01:25:18 25 4
gpt4 key购买 nike

我有一个字符串列表,每个字符串代表一个日期。我想将此列表映射到 DateTime 对象列表中;但是,如果任何字符串无效(抛出异常),我想记录错误但不将其添加到最终列表中。有没有办法同时进行过滤和映射?

这是我目前拥有的:

List<String> dateStrs = ...;
dateStrs.stream().filter(s -> {
try {
dateTimeFormatter.parseDateTime(s);
return true;
} catch (Exception e) {
log.error("Illegal format");
return false;
}
}.map(s -> {
return dateTimeFormatter.parseDateTime(s);
}.collect(...);

有什么方法可以做到这一点,这样我就不必为每个元素解析两次 DateTime 了吗?

谢谢

最佳答案

在我看来,在这里使用 flatMap 会更加地道:

dateStrs.stream().flatMap(s -> {
try {
return Stream.of(dateTimeFormatter.parseDateTime(s));
} catch (Exception e) {
return Stream.empty();
}
}).collect(...);

在这里,您可以在一个操作中完成所有操作。

关于java - 同时过滤和映射一个java流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36898020/

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