在java特殊用例中列出迭代期间添加的项
我有一个函数,它应该返回一个日期列表(java.sql.Date
),该列表基于设置为startDate
-endDate
的范围。我首先添加了startDate
,并希望增加它(可以是+1天、一周或一个月),然后从“最新”日期一直到结束日期
我尝试过使用传统的foreach,但它不起作用,因为它不允许在迭代时添加新日期,所以我切换到ListIterator
。
这只进入while
一次,增加日期,添加日期,但显然没有next
,因为add
函数没有在末尾附加项(?)
解决这项任务的实际方法是什么
public List<Date> getBookingDatesInRange(Date startDate, Date endDate, boolean isDaily, boolean isWeekly) {
List<Date> dates = new ArrayList<Date>();
dates.add(startDate);
ListIterator<Date> iter = dates.listIterator();
while(iter.hasNext()) {
LocalDate new = iter.next().toLocalDate();
Date newDate;
if(isDaily) {
newDate= Date.valueOf(new.plusDays(1));
} else if(isWeekly) {
newDate= Date.valueOf(new.plusWeeks(1));
} else {
newDate= Date.valueOf(new.plusMonths(1));
}
if(newDate.before(endDate) || newDate.equals(endDate) {
iter.add(newDate);
} else {
return dates;
}
}
共 (0) 个答案