我知道,有很多示例如何在迭代列表时从列表中删除某些内容,但这不是重点。
我正在尝试自动化记录我的工作的流程(最终应该打印到类似于01.01.2019 - Tuesday的文档中)。为此,我有一个带有两个日期选择器的用户界面。选择两个不同的日期并进行比较后,我知道这些日期之间有多少天。
现在出现以下问题:
我将两个日期之间的所有日期添加到列表中。之后,我尝试阻止一些特定的日子(总是同一天:星期一、星期六和星期日)。这些日子不应该再出现在列表中。
我尝试过在迭代列表时将值从列表中删除之类的操作。但它并没有按照我期望的方式工作。
例子:
我选择17.09.2019作为开始,24.09.2019作为结束。预期输出应该是:
平日:星期二
日期:2019-09-18
平日:星期三
日期:2019-09-19
平日:星期四
日期:2019-09-20
平日:星期五
日期:2019-09-24
平日:星期二
但如果我运行我的代码,输出是:
工作日: 星期二
日期: 2019-09-18
工作日: 星期三
日期
: 2019-09-19 工作日: 星期四
日期: 2019-09-20
工作日: 星期五
日期: 2019-09-21
工作日: 星期五
日期: 2019-09-22
工作日:星期五
日期:2019-09-23
工作日:星期五
日期:2019-09-24
工作日:星期二
你可以看到。星期六、星期日和星期一这个词将被删除,但它仍然在列表中。
代码:
long daysBetween = ChronoUnit.DAYS.between(dateBeginPicker.getValue(), dateEndPicker.getValue());
int db = Math.toIntExact(daysBetween);
String day = "";
List<LocalDate> dateList = new ArrayList<>();
LocalDate dateAfter = null;
for (int i = 0; i <= db; i++) {
dateAfter = dateBeginPicker.getValue().plusDays(i);
dateList.add(dateAfter);
}
for (Iterator<LocalDate> iterator = dateList.iterator(); iterator.hasNext();) {
LocalDate date = iterator.next();
if (date.getDayOfWeek().equals(DayOfWeek.SATURDAY) || date.getDayOfWeek().equals(DayOfWeek.SUNDAY) || date.getDayOfWeek().equals(DayOfWeek.MONDAY)) {
iterator.remove();
dateList.remove(date);
}
else {
day = date.getDayOfWeek().toString();
}
System.out.println("Date: " + date);
System.out.println("Weekday: " + day);
}
我最终期望的是,每个星期一、星期六和星期日应该从列表中删除,并且输出应该是正确的(如我的示例中所示)。
MMTTMM
SMILET
相关分类