错误方式
不能使用for循环,若是使用的话,出现的情况
public void wrongRemove(){
ArrayList<String> list = new ArrayList<>();
list.add("a");
list.add("B");
list.add("c");
list.add("d");
for (String s : list) {
list.remove("c");
System.out.println(s);
}
}
结果将会抛出异常:ConcurrentModificationException
原因:Java 一般不允许一个线程在遍历 Collection 时另一个线程修改它。
正确方式
使用iterator()边遍历边修改 Collection 的唯一正确方式是使用 Iterator.remove() 方法,如下:
public void test(){
ArrayList<String> list = new ArrayList<>();
list.add("a");
list.add("B");
list.add("c");
list.add("d");
Iterator<String> it = list.iterator();
while(it.hasNext()){
String next = it.next();
if(next.equals("d")) {
it.remove();
continue;
}
System.out.println(next);
}
}