gruop.forEach(mqInfoDto -> { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date date1 = null; try { date1 = sdf.parse("2023-05-22 00:00:00"); } catch (ParseException e) { throw new RuntimeException(e); } if (mqInfoDto.getMonitorDate().equals(date1)) { gruop.remove(mqInfoDto); } });这段代码运行时会报上面这个异常 我应该怎么改
时间: 2024-02-10 18:13:17 浏览: 51
基于Focus-Gruop优化算法(FGOA)的matlab仿真+代码操作视频
这个异常是在使用 `remove()` 方法时导致的,因为在使用 `forEach()` 循环遍历 `gruop` 集合时,你不能在遍历过程中修改集合元素的个数,否则会抛出这个异常。可以改成使用迭代器的方式来遍历和删除集合元素,代码如下所示:
```
Iterator<MqInfoDto> iterator = gruop.iterator();
while (iterator.hasNext()) {
MqInfoDto mqInfoDto = iterator.next();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date1 = null;
try {
date1 = sdf.parse("2023-05-22 00:00:00");
} catch (ParseException e) {
throw new RuntimeException(e);
}
if (mqInfoDto.getMonitorDate().equals(date1)) {
iterator.remove();
}
}
```
使用迭代器遍历集合时,不会报上面这个异常。
阅读全文