java foreach循环抛出异常java.util.ConcurrentModificationException
代码如下:
- 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循环抛出异常java.util.ConcurrentModificationException的更多相关文章
- Java for-each循环解惑
Java for-each循环解惑 2014/04/24 | 分类: 技术之外 | 0 条评论 | 标签: JAVA 分享到:21 本文由 ImportNew - liqing 翻译自 javarev ...
- 反编译看java for-each循环
java 1.5发行版引入的for-each循环.(引自<Effective Java>中文版第二版 第46条) 如以下对数组列表的for-each循环示例: public class F ...
- java foreach 循环原理
java foreach 语法是在jdk1.5时加入的新特性,主要是当作for语法的一个增强,那么它的底层到底是怎么实现的呢?因为面试时被问到,所以在这边做一个记录. 首先来看看foreach能够使用 ...
- Java foreach循环
foreach循环:增强性的for循环应用: 在for语句中,需要使用索引来进行操作具体的数组或集合内容操作:而foreach可以取消索引的操作细节: for ( 类型 变量 : 数组 | 集合 ) ...
- java foreach循环为什么不能赋值
直接上代码 public class test4 { public static void main(String args[]){ int [] a=new int[3]; for(int j:a) ...
- JAVA中的for-each循环与迭代
在学习java中的collection时注意到,collection层次的根接口Collection实现了Iterable<T>接口(位于java.lang包中),实现这个接口允许对象成为 ...
- Java-Runoob-高级教程-实例-方法:13. Java 实例 – for 和 foreach循环使用
ylbtech-Java-Runoob-高级教程-实例-方法:13. Java 实例 – for 和 foreach循环使用 1.返回顶部 1. Java 实例 - for 和 foreach循环使用 ...
- foreach循环里不能remove/add元素的原理
foreach循环 foreach循环(Foreach loop)是计算机编程语言中的一种控制流程语句,通常用来循环遍历数组或集合中的元素.Java语言从JDK 1.5.0开始引入forea ...
- 为什么阿里巴巴禁止在 foreach 循环里进行元素的 remove/add 操作--java.util.ConcurrentModificationException
摘要 foreach循环(Foreach loop)是计算机编程语言中的一种控制流程语句,通常用来循环遍历数组或集合中的元素. 在阿里巴巴Java开发手册中,有这样一条规定: 但是手册中并没有给出具体 ...
随机推荐
- 【java+selenium3】线程休眠方法 (六)
一.线程休眠的方法 Thread -- sleep 调用方式: Thread.sleep(long millis) 建议:不推荐使用此方式来等待,因为元素的实际渲染时间未知,长时间的等待则浪费的时 ...
- IP基础 & 子网划分 & 路由寻址
IP地址详解 IP地址概念 就像用身份证号码来区别毎个人一样,为了区别 网上的每台计算机,我们给因特网上的每一台计算机一个唯一的编号 ,我们把它称为IP地址 IP地址就是一个唯一标识 ,是一段网络编码 ...
- 【python+postman接口自动化测试】(1)网络基础知识
一.IP地址 就像每个人都有一个身份证号码 IP地址是IP协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个逻辑地址. 查看IP命令: Windows: ipconfig Li ...
- 02 | 顶层对象和global对象
顶层对象的属性 顶层对象,在浏览器环境指的是window对象,在Node指的是global对象.ES5之中,顶层对象的属性与全局变量是等价的. window.a = 1; a // 1 a = 2; ...
- 持续集成、持续交付(CI/CD)开篇,先来唠唠嗑
前言 现在稍微有点规模的系统,很多都是采用分布式/微服务架构,将一个大系统拆分为很多个功能模块进行开发.测试.发布.管理等,如果全部流程都采用人工的形式进行的话,效率肯定是超级不高效滴.而且现在很多项 ...
- ES6基础知识(Reflect)
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Django笔记&教程 3-1 模板(Template)基础
Django 自学笔记兼学习教程第3章第1节--模板(Template)基础 点击查看教程总目录 1 介绍 模板文件:让Django能够自动生成html代码 作为一个web框架,Django需要需要在 ...
- Django笔记&教程 3-4 模板继承
Django 自学笔记兼学习教程第3章第4节--模板继承 点击查看教程总目录 在介绍具体的技术之前,先介绍在什么样的场景中,需要使用这样的技术,我觉得这对于新手理解起来很重要. 一般来说,要渲染一个页 ...
- 面试官:咱们来聊一聊mysql主从延迟
背景 前段时间遇到一个线上问题,后来排查好久发现是因为主从同步延迟导致的,所以今天写一篇文章总结一下这个问题希望对你有用.如果觉得还不错,记得加个关注点个赞哦 思维导图 思维导图 常见的主从架构 随着 ...
- Nginx支持WebSocket反向代理
WebSocket是目前比较成熟的技术了,WebSocket协议为创建客户端和服务器端需要实时双向通讯的webapp提供了一个选择.其为HTML5的一部分,WebSocket相较于原来开发这类app的 ...