一、结论
for循环、foreach都不能用来删除指定元素,可以通过迭代器来删除指定的元素
二、代码
public class Client {
public static void main(String[] args) {
test3();
}
/**
* 正常
*/
public static void test() {
List<String> list = new ArrayList<>();
list.add("A");
list.add("B");
list.add("C");
for (String item : list) {
if (item.equals("B")) {
list.remove(item);
}
}
System.out.println(list);
}
/**
* 报错:Exception in thread "main" java.util.ConcurrentModificationException
*/
public static void test2() {
List<String> list = new ArrayList<>();
list.add("A");
list.add("B");
list.add("B");
list.add("C");
for (String item : list) {
if (item.equals("B")) {
list.remove(item);
}
}
System.out.println(list);
}
/**
* 迭代器删除指定元素:正常
*/
public static void test3() {
List<String> list = new ArrayList<>();
list.add("A");
list.add("B");
list.add("B");
list.add("C");
//目标删除指定元素
Iterator<String> it = list.iterator();
while (it.hasNext()) {
String item = it.next();
if (item.equals("B")) {
it.remove();
}
}
System.out.println(list);
}
}
网友评论