首先要知道的是(如

JLS所述)以下增强的for循环:

for (String s : list) {

// Do something with s

}

相当于:

for (Iterator it = list.iterator(); it.hasNext();) {

String s = it.next();

// Do something with s

}

如果你看一下AbstractList中迭代器的实现,你会看到:

> hasNext()不检查并发修改,只是使用其大小检查我们是否在列表的末尾:

public boolean hasNext() {

return cursor != size();

}

> next()完成的第一件事是调用checkForComodification()以查看在迭代时是否修改了列表:

public E next() {

checkForComodification();

try {

E next = get(cursor);

lastRet = cursor++;

return next;

} catch (IndexOutOfBoundsException e) {

checkForComodification();

throw new NoSuchElementException();

}

}

final void checkForComodification() {

if (modCount != expectedModCount)

throw new ConcurrentModificationException();

}

因此,当您迭代并删除列表的倒数第二个元素时,下一条指令将是对hasNext()的调用,它将返回false,因为删除一个元素导致列表的大小减少一个,并且您的迭代将停止而不调用next()并抛出异常.

顺便说一句,所有这些只是一个实现细节,你不应该依赖它,因为它可以改变,并在你迭代时使用it.remove()从列表中删除一个元素.

幻数java题_java – ConcurrentModificationException的幻数相关推荐

  1. 幻数java题_java – 公式中的幻数

    这是一个完善的惯例,应避免使用魔法数字.但复杂的条件公式中的幻数呢?例如: int result = 0; if (level <= 50) { result = (int) (Math.pow ...

  2. 幻数java题_幻数

    幻数--上下文里出现的字面常量. 幻数带来的主要问题是它们没有(抽象)语义.当我们阅读和维护带有幻数的代码时,不得不去一个个地搞清楚每个光秃秃的量到底代表的是什么意思.没错,这样也能勉强度日,但带来的 ...

  3. 幻数java题_关于数组中的幻数?:数组中的幻数? -C ++

    我是一个相当新的程序员,如果无法轻松获得此信息,我感到抱歉,我只是无法找到它. 这是我的问题: 当您使用文字数字访问数组的特定元素时,是否被视为幻数? 例如: arrayOfNumbers[6] // ...

  4. 幻数java题_诗意代码 – PoemCode

    读K&R之幻数.返回值和参数传递 Dennis M. Ritchie 直到不久前,我都不曾认真地了解过C.大学课堂上学习过C++,在那段不长的时间里,学到的东西一直支撑着我对C的认知.等工作五 ...

  5. 月份java题_Java基础50道经典练习题(14)——求日期

    package com.homework.test; import java.util.*; /* [程序 14 求日期] 题目:输入某年某月某日,判断这一天是这一年的第几天? 程序分析:以 3 月 ...

  6. 简单java题_java

    1.简单说明java的异常处理策略. 答: 1.将各类错误统一封装成异常对象 将各种不同原因引发的错误处理成"异常对象",为建立统一的异常处理机制奠定基础.异常处理就是捕获并处理该 ...

  7. 求标准体重Java题_Java习题

    P96.1.编写Java应用程序,定义一个计算两个整数和的方法static int add(int op1, int op2).在main方法中声明两个整型变量,分别赋值,调用add()方法得到它们的 ...

  8. i10在java中什么意思啊,java题库_JAVA题库的题 求答案啊!!!!!!!!!!!!!!!!_淘题吧...

    ⑴ JAVA题库的题 求答案啊!!!!!!!!!!!!!!!! 1.有点没太明白意思,是要求2个数相加的和吗? 导入Java.util.扫描仪: 公共类应用程序1 /** * @param参数 */ ...

  9. 【源码+教程】Java课设项目_12款最热最新Java游戏项目_Java游戏开发_Java小游戏_飞翔的小鸟_王者荣耀_超级玛丽_推箱子_黄金矿工_贪吃蛇

    马上就要期末了,同学们课设做的如何了呢?本篇为大家带来了12款热门Java小游戏项目的源码和教程,助力大家顺利迎接暑假![源码+教程]Java课设项目_12款最热最新Java游戏项目_Java游戏开发 ...

最新文章

  1. 一场由金山词霸引起的车祸 Process finished with exit code -1073741819 (0xC0000005)
  2. dsp-asic-fpga
  3. UML科普文,一篇文章掌握14种UML图
  4. php 写入文件 格式,在使用php写入文件时如何保证用户的单一
  5. BZOJ 1012 [JSOI2008]最大数maxnumber
  6. Caffe 增加自定义 Layer 及其 ProtoBuffer 参数
  7. Win7启动修复MBR(Win7+Linux删除Linux后进入grub rescue的情况)
  8. 验证客户端和服务端可以传输经SM4加密的密文数据,从而验证发送数据已使用服务器密码机进行SM4加密,而不是随便的字符串乱码
  9. Layui表单账号注册校验密码是否一致
  10. java 日期 yyyy_java日期中YYYY与yyyy的区别
  11. oracle建库并使用HR范例,Oracle HR样例数据库建立
  12. allure 测试报告本地打开_Allure自动化测试报告我是这样用的
  13. 服务器删除的excel文件备份在哪里,excel自动备份文件在哪!如何找回EXCEL表格已删除的文件...
  14. keytool生成证书
  15. 华为认证云服务架构专家正式发布!
  16. 数据湖:数据同步工具NiFi
  17. 解决Flash Player过期的问题——谷歌浏览器Chrome 87.0.4270.0绿色免安装增强版
  18. Redis简介(01)历史与发展
  19. 【Qt】弹出子窗口时禁用主窗口
  20. FFmpeg获取网络摄像头数据解码

热门文章

  1. [Client]前端代码规范 及 最佳实践
  2. 怎么依靠网络赚钱,网上可以做什么副业
  3. Java AQS的实现原理(大部分同步类都依赖AQS实现)
  4. 牛客每日练习----あなたの蛙が帰っています,おみやげをまらいました,写真がとどいています
  5. yum软件包管理 yum(软件仓库)
  6. 硬件找工作笔试题、面试题,求职offer指导规划
  7. 如何做一场有创意的活动策划?
  8. 机器学习之recall、precision、accuracy
  9. 自己撸一个Wordcount
  10. Linux下 ifconfig 命令的使用(Linux命令)