// foreach内删除元素,抛出ConcurrentModificationException异常
List<String> list = new ArrayList<String>();
list.add("1");
list.add("2");
list.add("3");
for (String temp : list) {
if ("3".equals(temp)) {
list.remove(temp);
}
}
上面代码是常见的异常出现方式。ArryList类使用内部类的方式,实现了Iterator接口。为避免异常,可以采用Iterator来代替:
// 使用iterator遍历,在循环中删除元素,不抛异常
List<String> list = new ArrayList<String>();
list.add("1");
list.add("2");
list.add("3");
Iterator<String> iterator = list.iterator();
while(iterator.hasNext()){
if (iterator.next().equals("3")){
iterator.remove();
}
}
将第一段代码反编译,如下:
// 反编译代码
List<String> l