hsa*_*dik 0 java java-8 java-stream java-time
我有三个 LocalDate(最后 3 天),对于每个日期,我想循环并执行一些操作:
StringBuilder result = "";
for (LocalDate currentDate = LocalDate.now(); currentDate.isAfter(LocalDate.now().minusDays(3)); currentDate = currentDate.minusDays(1)){
Page<User> users = userService.getAllUsersByRegistrationDate(currentDate);
String reportTable = reportService.getReportTable(users, tableTemplate);
result.append(reportTable);
}
Run Code Online (Sandbox Code Playgroud)
如何用 Stream API 替换此代码或提高可读性?
我发现你的代码很好,就我目前的情况。如果您想使用流操作,或者您\xe2\x80\x99只是好奇它的外观,从 Java 9 开始您可以这样做:
\n LocalDate today = LocalDate.now(ZoneId.of("Africa/Timbuktu"));\n today.datesUntil(today.minusDays(3), Period.ofDays(-1))\n .forEach(ld -> {\n System.out.println("Now doing something with date " + ld);\n });\n
Run Code Online (Sandbox Code Playgroud)\n刚才运行时的输出:
\n\n\nRun Code Online (Sandbox Code Playgroud)\nNow doing something with date 2020-10-15\nNow doing something with date 2020-10-14\nNow doing something with date 2020-10-13\n
LocalDate.datesUntil()
它\xe2\x80\x99s对于负周期的工作没有很好的记录,但它确实可以并返回一个LocalDate
对象流。
(我知道 lambda 中的大括号在这种情况下是不必要的,但从你的问题看来,你想为每个日期执行多个语句,因此它们当然是必要的。如果你只想要一个方法调用在那里,您可能只需要一行。. .forEach(ld -> System.out.println("Now doing something with date " + ld))
)
归档时间: |
|
查看次数: |
761 次 |
最近记录: |