Java流过滤器行为

时间:2015-07-16 14:43:40

标签: java collections filter count

我有一个Dailyline类使用此方法:

public boolean isAtMostThreeDaysBefore(Dailyline dailyline) {
    DateTime toCompare = new DateTime(this.year, this.month, this.day, 0, 0);
    DateTime baseDay = new DateTime(dailyline.year, dailyline.month, dailyline.day, 0, 0);
    int daysBetween = Days.daysBetween(toCompare.toLocalDate(), baseDay.toLocalDate()).getDays();

    return (daysBetween >= 1 && daysBetween <= 3);
}

比较2 dailyline并返回,如果通过的是前3天中的一个。这个功能效果很好。

我还有List<Dailyline> dailylines这个有问题的功能:

for (Dailyline dailyline : dailylines) {
    System.out.println(dailylines.size());
    Long lastThreeDays = dailylines.stream().filter(d -> d.isAtMostThreeDaysBefore(dailyline)).count();
    System.out.println(lastThreeDays);
}

编辑 - 不应该有任何高于3的lastThreeDays,因为日线是按日期(年 - 月 - 日)唯一的,因为我测试了布尔方法返回的真实的数值。 / p>

我的dailylines列表未受影响,就像我想要的那样,并保留32698个项目,但'lastThreeDays'我不知道为什么......我只测试了1个没有循环的每日线,并且有2个{ {1}}返回true ...

isAtMostThreeDaysBefore

0 个答案:

没有答案