package day06.demo4_集合遍历常见问题;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
public class Test {
public static void main(String[] args) {
// 创建Collection集合
Collection<String> col = new ArrayList<>();// 多态
// 添加元素
col.add("java1");
col.add("java2");
col.add("java2");
col.add("java5");
col.add("java2");
col.add("java3");
col.add("java4");
// 需求: 把集合中所有的java2元素删除
// 问题: 以下2种方式一边遍历,一边使用集合删除元素,都会出现并发修改异常 ConcurrentModificationException
// 方式一: 迭代器方式
//Iterator<String> it = col.iterator();
//while (it.hasNext()) {
// String e = it.next();
// // 判断迭代出来的元素是否是java2
// if ("java2".equals(e)){
// // 使用集合删除迭代出来的java2元素
// col.remove(e);
// }
//}
//System.out.println(col);
// 方式二: 增强for循环
//for (String e : col) {
// // 判断迭代出来的元素是否是java2
// if ("java2".equals(e)){
// // 使用集合删除迭代出来的java2元素
// col.remove(e);
// }
//}
// 解决方法: 使用迭代器一边遍历一边删除
Iterator<String> it = col.iterator();
while (it.hasNext()) {
String e = it.next();
// 判断迭代出来的元素是否是java2
if ("java2".equals(e)) {
// 使用迭代器删除迭代出来的java2元素
it.remove();// 默认删除刚刚迭代出来的元素
}
}
System.out.println(col);
}
}