public static void main(String[] args) {
List<String> list = new ArrayList<String>();
list.add("Value1");
list.add("Value2");
list.add("Value3");
for(String val: list ) {
list.remove(0);
System.out.println(list);
}
}
o \ p:[Value2,Value3] 线程&#34; main&#34;中的例外情况java.util.ConcurrentModificationException
这里我试图同时读取和删除第0个元素。 所以它应该给出一个异常。但我的qn是为什么它在异常之后执行println语句。它找到异常的那一刻它应该出现在循环之外。
答案 0 :(得分:1)
你不应该在这里使用for循环。使用不会导致异常的迭代器:
ListIterator<String> iterator = list.listIterator();
while (iterator.hasNext()) {
String string = iterator.next();
iterator.remove();
}
答案 1 :(得分:0)
当你正在使用for-each循环时,当你从一个arraylist中删除时,事情会向后移动,因此你会跳过这个beacsue。要解决此问题,请使用regualr for loop;
for(int i=0;i<list.size();i++){
list.remove(i);
i--;
System.out.print(i);
}
答案 2 :(得分:0)
你可以使用get Iterator和iterator.remove()