日期的流过滤器

Stream filter for Date

我有一个自定义对象列表,其中有一个 String 字段来存储日期。

我需要编写一个过滤器来根据条件获取自定义对象列表:如果自定义对象日期和当前日期之间的天数等于 4,则 return 列表中的满足对象。

我试图在过滤器中将自定义对象字符串日期解析为 ZonedDateTime。但它期待 try/catch 块。如何处理?

代码:

list.stream().filter(ChronoUnit.DAYS.between(currDate,
    ZonedDateTime.ofInstant((df.parse(stringdate).toInstant(),ZoneId.of("UTC"))) == 4)

您可以在 lambda 中使用 try/catch:

list.stream().filter(stringdate -> {
        try {
            return ChronoUnit.DAYS.between(currDate,
                    ZonedDateTime.ofInstant(df.parse(stringdate).toInstant(),
                                            ZoneId.of("UTC"))) == 4;
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return false;
    }).collect(...);

发生异常时如何处理当然由您决定,此代码中的 return false 会导致元素被过滤掉。您还可以使用另一种方法来执行从 lambda 调用的解析和异常处理。