【发布时间】:2022-01-02 03:57:50
【问题描述】:
查询: 过滤下面的数据以在列表中查找每个月的最后日期。请注意,在这种情况下, 数据中的最后一个月的日期可能是或 可能与日历月的最后一个日期不匹配。 预期的输出显示在第二个列表中。
研究:
- 我相信
TemporalAdjusters.lastDayOfMonth()在这种情况下不会有帮助,因为列表中的最后一个日期可能与日历月的最后一个日期匹配,也可能不匹配。 - 我在 Stack Overflow 上检查了几个问题,并在 Google 上搜索过, 但我找不到与我的需求相似的东西。
我希望问题很清楚,并为我指明了如何使用流来完成此操作的方向,
因为我不想使用for 循环。
样本数据:
| Date | Model | Start | End |
|---|---|---|---|
| 27-11-1995 | ABC | 241 | 621 |
| 27-11-1995 | XYZ | 3456 | 7878 |
| 28-11-1995 | ABC | 242 | 624 |
| 28-11-1995 | XYZ | 3457 | 7879 |
| 29-11-1995 | ABC | 243 | 627 |
| 29-11-1995 | XYZ | 3458 | 7880 |
| 30-11-1995 | ABC | 244 | 630 |
| 30-11-1995 | XYZ | 3459 | 7881 |
| 01-12-1995 | ABC | 245 | 633 |
| 01-12-1995 | XYZ | 3460 | 7882 |
| 04-12-1995 | ABC | 246 | 636 |
| 04-12-1995 | XYZ | 3461 | 7883 |
| 27-12-1995 | ABC | 247 | 639 |
| 27-12-1995 | XYZ | 3462 | 7884 |
| 28-12-1995 | ABC | 248 | 642 |
| 28-12-1995 | XYZ | 3463 | 7885 |
| 29-12-1995 | ABC | 249 | 645 |
| 29-12-1995 | XYZ | 3464 | 7886 |
| 01-01-1996 | ABC | 250 | 648 |
| 01-01-1996 | XYZ | 3465 | 7887 |
| 02-01-1996 | ABC | 251 | 651 |
| 02-01-1996 | XYZ | 3466 | 7888 |
| 29-01-1996 | ABC | 252 | 654 |
| 29-01-1996 | XYZ | 3467 | 7889 |
| 30-01-1996 | ABC | 253 | 657 |
| 30-01-1996 | XYZ | 3468 | 7890 |
| 31-01-1996 | ABC | 254 | 660 |
| 31-01-1996 | XYZ | 3469 | 7891 |
需要输出:
| Date | Model | Start | End |
|---|---|---|---|
| 30-11-1995 | ABC | 244 | 630 |
| 30-11-1995 | XYZ | 3459 | 7881 |
| 29-12-1995 | ABC | 249 | 645 |
| 29-12-1995 | XYZ | 3464 | 7886 |
| 31-01-1996 | ABC | 254 | 660 |
| 31-01-1996 | XYZ | 3469 | 7891 |
【问题讨论】:
标签: java java-stream yearmonth