当在Java中迭代一个列表(如ArrayList、LinkedList等)时,如果在迭代过程中修改了列表的内容,就会抛出ConcurrentModificationException异常。这是因为修改列表的操作与迭代器的状态不一致,导致迭代器无法正确地定位到下一个元素。
为了解决这个问题,可以使用以下方法:
Iterator<String> iterator = list.iterator();
while (iterator.hasNext()) {
String item = iterator.next();
if (需要删除的条件) {
iterator.remove();
}
}
List<String> newList = list.stream()
.filter(item -> !需要删除的条件)
.collect(Collectors.toList());
for (String item : new ArrayList<>(list)) {
if (需要删除的条件) {
list.remove(item);
}
}
list.removeIf(item -> 需要删除的条件);
注意:在使用迭代器进行迭代操作时,不要在迭代过程中修改列表的内容,否则会抛出ConcurrentModificationException异常。在使用Java 8提供的Stream API进行迭代操作时,可以避免此问题,因为它是基于内部迭代器实现的。
领取专属 10元无门槛券
手把手带您无忧上云