获取开始日期和结束日期的日期列表

Jos*_*ni8 2 java loops date

给定两个日期(开始日期和结束日期的形式为M,YYYY),我想在每个元素的日期中以起始日期和结束日期之间的形式M,YYYY形成一个日期,包括.

例如,给定日期10,2010和2,2011我的列表应如下所示:

list = {(10,2010),(11,2010),(12,2010),(1,2011),(2,2011)};
Run Code Online (Sandbox Code Playgroud)

我可以通过创建一个while循环(同时startYear <endYear),开始月份的帐户,循环到第12个月,将日期插入列表等来完成此操作.

但我觉得必须有一种更有效的方法来解决这个问题,因为这需要对起始月份和结束年份进行多次检查.有没有更好的解决方案,我没有看到?

ass*_*ias 5

将日期存储为对象而不是年,月的"对"更有意义.例如,使用java.time API中的YearMonth类(Java 8及更高版本):

YearMonth from = YearMonth.of(2010, 10);
YearMonth to = YearMonth.of(2011, 2);
List<YearMonth> list = new ArrayList<> ();

for (YearMonth ym = from; !ym.isAfter(to); ym = ym.plusMonths(1)) {
  list.add(ym);
}
Run Code Online (Sandbox Code Playgroud)

或者使用流API(在这种情况下不确定它更干净):

List<YearMonth> list = Stream.iterate(from, ym -> ym.plusMonths(1))
                             .limit(MONTHS.between(from, to) + 1)
                             .collect(toList());
Run Code Online (Sandbox Code Playgroud)