if (!CollectionUtils.isEmpty(deviceMsgVoList)) { deviceMsgVoList = deviceMsgVoList.stream().filter(item -> item.getType() == 1).collect(Collectors.toList()); if (!CollectionUtils.isEmpty(deviceMsgVoList)) { for (DeviceMsgVo deviceMsgVo : deviceMsgVoList) { // 查询当前对象表里有没有 Integer integer = deviceAlarmLocationMapper.selectTable(deviceMsgVo); if (integer < 1) { deviceAlarmLocationMapper.addAlarm(deviceMsgVo); } else { // 从列表中移除已存在的记录 deviceMsgVoList.remove(deviceMsgVo); }我在移除表格中的记录时无法移除
时间: 2024-02-14 13:27:14 浏览: 264
在移除表格中的记录时无法移除的原因可能是因为在遍历`deviceMsgVoList`列表的同时进行了删除操作,这会导致迭代器的并发修改异常。为了解决这个问题,可以使用一个临时列表来存储需要移除的元素,然后在遍历结束后再统一移除。
以下是修改后的代码示例:
```java
if (!CollectionUtils.isEmpty(deviceMsgVoList)) {
deviceMsgVoList = deviceMsgVoList.stream().filter(item -> item.getType() == 1).collect(Collectors.toList());
if (!CollectionUtils.isEmpty(deviceMsgVoList)) {
List<DeviceMsgVo> toRemove = new ArrayList<>(); // 临时列表,用于存储需要移除的元素
for (DeviceMsgVo deviceMsgVo : deviceMsgVoList) {
// 查询当前对象表里有没有
Integer integer = deviceAlarmLocationMapper.selectTable(deviceMsgVo);
if (integer < 1) {
deviceAlarmLocationMapper.addAlarm(deviceMsgVo);
} else {
// 将需要移除的元素添加到临时列表中
toRemove.add(deviceMsgVo);
}
}
// 移除临时列表中的元素
deviceMsgVoList.removeAll(toRemove);
}
}
```
通过使用临时列表来存储需要移除的元素,可以避免在遍历过程中对原列表进行删除操作,从而解决无法移除的问题。
阅读全文