日期的流过滤器
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 调用的解析和异常处理。
我有一个自定义对象列表,其中有一个 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 调用的解析和异常处理。