首页 > 解决方案 > JAVA:过滤等于今天和之后的所有日期

问题描述

我正在尝试检查一种方法来检索等于今天和未来日期的所有日期

dates.stream().filter(d -> d.equals(new Date()) || d.after(new Date())).collect(Collectors.toList());

我需要一个更有效的解决方案。

标签: javadate

解决方案


如果你真的需要使用Date类(而不是推荐的java.time库),你可以使用compareTo()方法。

Date currentDate = new Date();
dates.stream()
    .filter(date -> date.compareTo(currentDate) >= 0)
    .collect(Collectors.toList());

Date对象是按它们的long值进行比较的,所以当我使用>=它时,它的意思是,date等于或晚于currentDate().


推荐阅读