我有一个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