Java foreach循环, Iterator 迭代和remove方法之间的冲突
来源:互联网 发布:sql语句中的时间格式 编辑:程序博客网 时间:2024/05/16 11:15
代码如下:
for (Iterator<String> iter = list.iterator(); iter.hasNext(); ) {if (Integer.parseInt(iter.next()) % 3 == 0 ) {list.remove(iter.next());}System.out.println(list.size() + "");}
这样,使用Iterator进行迭代的时候,如果同时移除其中的元素,会抛出java.util.ConcurrentModificationException异常。我猜想是因为我使用Iterator进行迭代的同时,移除了其中的对象,破坏了Iterator内部用来迭代的索引。所以抛出异常。
当然,使用foreach的语法,进行循环,本身就是使用了Iterator进行迭代。所以也会出现同样的问题。
代码如下:
for ( String iter: list ) {if (Integer.parseInt(iter) % 3 == 0 ) {list.remove(iter);}System.out.println(list.size() + "");}
抛出的异常也是一样的。
如果使用普通的for循环,自己设定索引i 进行循环,就不会出现此问题
代码如下:
for (int i = 0; i < list.size(); i ++ ) { String s = list.get(i); System.out.println(list.size() + ""); if ( Integer.parseInt(s) % 3 == 0 ) { list.remove(s); } }
- Java foreach循环, Iterator 迭代和remove方法之间的冲突
- Java foreach循环, Iterator 迭代和remove方法之间的冲突
- java迭代器Iterator和foreach循环
- Java基础8:Iterator和foreach循环
- Iterator和foreach循环
- Java Iterator的remove方法
- Java Iterator的remove()方法
- 黑马程序员_两种遍历集合的方法Iterator接口和foreach循环
- java和javascript的for,foreach,iterator
- Java 的三种循环:foreach,Iterator 和 classic for loop
- Java 的三种循环:foreach,Iterator 和 classic for loop
- 迭代删除(Iterator.remove())时的java.lang.IllegalStateException原因及解决办法
- java Iterator.remove() 方法的用途
- java Iterator.remove() 方法的用途
- java collection Iterator的remove()方法
- Iterator迭代的过程中使用list.remove
- for、foreach、Iterator迭代效率
- forEach无法remove与Iterator的关系
- 借助开源项目,学习软件开发 .
- Exception in thread "main" java.lang.NoClassDefFoundError:
- 【单元复习】之标日初级下册第九、十单元
- 第六章 MySQL数据库基础-常用的命令行
- CSRF漏洞利用
- Java foreach循环, Iterator 迭代和remove方法之间的冲突
- 模式对话框与无模式对话框
- Bochs安装FreeDOS与调试
- POJ 2385 Apple Catching [DP]
- HDU 1019 Least Common Multiple
- Undoing in Git - Reset, Checkout and Revert
- mysql-性能,命令-explain,show processlist,show
- js实现页面的跳转
- java实现的计算器