私はそれぞれが日付を表す文字列のリストを持っています。このリストをDateTimeオブジェクトのリストにマップしたいと思います。しかし、文字列のいずれかが無効な場合(例外をスローする)、私はエラーを記録したいが、最後のリストには追加しない。同時にフィルタリングとマッピングの両方を行う方法はありますか?同時にJavaストリームをフィルタリングしてマップする
これは私が現在持っているものです。
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(...);
は、私は、各要素のために二回parseDateTimeする必要がないようにこれを行う方法はありますか?
ありがとうございました