北京定制网站开发公司,淘宝运营公司,网络推广宣传方式,福建网站建设科技有限公司在使用Iterator迭代器对集合中的元素进行迭代时#xff0c;如果调用了集合对象的remove()方法删除元素或者调用add()方法添加元素之后#xff0c;继续使用迭代器遍历元素#xff0c;会出现异常(java.util.ConcurrentModificationException)。
import java.util.ArrayList;
…
在使用Iterator迭代器对集合中的元素进行迭代时如果调用了集合对象的remove()方法删除元素或者调用add()方法添加元素之后继续使用迭代器遍历元素会出现异常(java.util.ConcurrentModificationException)。
import java.util.ArrayList;
import java.util.Iterator;
import java.util.function.Consumer;public class ListDemo04 {public static void main(String[] args) {// 1、准备数据ArrayListString list new ArrayList();list.add(ZhaoYQ);list.add(Java1);list.add(Java2);list.add(张无忌);list.add(张翠山);list.add(周芷若);System.out.println(list);//[ZhaoYQ, Java1, Java2, 张无忌, 张翠山, 周芷若]//2.需求删除全部的Java信息。// a、迭代器遍历删除IteratorString it list.iterator();/*while (it.hasNext()){String ele it.next();if(ele.startsWith(Java)){// 删除Java//list.remove(ele); // 集合删除会出异常ConcurrentModificationExceptionit.remove(); // 删除迭代器所在位置的元素值不会出异常}}System.out.println(list);*///打印结果 [ZhaoYQ, 张无忌, 张翠山, 周芷若]// b、forEach边迭代集合边删除会出异常这种无法解决/*for (String s : list) {if(s.startsWith(Java)){list.remove(s);}}*/// c、lambda表达式边迭代集合边删除会出异常这种无法解决/*list.forEach(s - {if(s.startsWith(Java)){list.remove(s);}});*/// d、for循环(边遍历边删除集合没毛病但是必须从后面开始遍历删除才不会出现漏掉应该删除的元素)/*for (int i list.size() - 1; i 0 ; i--) {String ele list.get(i);if(ele.startsWith(Java)){list.remove(ele);}}System.out.println(list);*///打印结果 [ZhaoYQ, 张无忌, 张翠山, 周芷若]}
}