当前位置: 首页 > news >正文

宁波外贸公司网站建设和幼儿做网站

宁波外贸公司网站建设,和幼儿做网站,开发者应用,合肥建网站公司平时大家for循环应该用的不少#xff0c;特别是增强for循环#xff0c;简单快捷。但是在增强for中做删除操作#xff0c;却会抛出java.util.ConcurrentModificationException#xff0c;一起来看下。上面的代码#xff0c;在for循环执行完if中的remove#xff0c;遍历下一…平时大家for循环应该用的不少特别是增强for循环简单快捷。但是在增强for中做删除操作却会抛出java.util.ConcurrentModificationException一起来看下。上面的代码在for循环执行完if中的remove遍历下一个元素时便会抛出java.util.ConcurrentModificationException。到底在for (String s : list)中发生了什么呢。ArrayList中有一个内部类Itr它继承了Iterator接口。当第一次遍历增强for循环时会创建一个Itr对象注意下图红框的部分变量modCount属于ArrayList用来记录ArrayList被修改的次数赋值给了Itr类的变量expectedModCount。然后依次调用Itr的hasNext()和next()方法取出ArrayList中的元素赋值给for中的变量注意红框的方法checkForComodification()。当执行list.remove(s)时实则调用其内部的fastRemove(index)做的删除操作同时modCount,但是并没有重新赋值给Itr类的变量expectedModCount。那么当遍历下一个元素调用checkForComodification()方法时if中的条件就会成立然后就会抛出ConcurrentModificationException异常。既然增强for循环中的remove操作会抛异常那么在普通for循环和迭代器循环中做remove也会抛异常吗普通for循环普通for循环调用的是remove(int index)方法不会抛异常但是需要注意1. 如果将for中的i list.size()替换成i length会抛出IndexOutOfBoundsException2. 在list.remove(i)后下一次遍历前此时i表示第i1个元素迭代器循环迭代器循环调用的是Itr类的remove(int index)方法不会抛异常原因是其内部也是调用的ArrayList的remove(int index)方法但是在之后有给expectedModCount重新赋值。所以增强for循环实际上还是迭代器遍历但是remove操作并没有同步变量会导致异常普通for虽然没有异常但是在remove后可能会忽略下标1而出错如果要在遍历时删除最安全就是用迭代器。
http://www.zqtcl.cn/news/319339/

相关文章:

  • flask 简易网站开发网站建设和空间
  • 怀化建设网站wordpress静态化插件
  • 网站上的中英文切换是怎么做的大连网站制作优选ls15227
  • 网站开发工作安排广告设计公司有哪些
  • 无人机公司网站建设用什么软件做网站最简单
  • 企业微信app下载安装电脑版淄博网站优化价格
  • 做一个电影网站需要多少钱在线代理服务器网站
  • 怎样制作微信网站办网络宽带多少钱
  • ios开发者账号有什么用嘉兴网站关键词优化
  • 怎样在外贸网站做业务简付后wordpress
  • html网页制作源代码成品长沙 网站优化
  • 长沙做网站哪里好百度招聘 网站开发
  • 创建网站服务器银川建设厅网站
  • 海口建设局网站代运营网站建设
  • 网站建设环境搭建心得体会微信开发者模式
  • 网站点击率多少正常落地页网站
  • 做淘宝店铺有哪些好的网站东莞网站制作建设收费
  • Wordpress 实名认证太原网站搜索优化
  • 大良网站建设dwxw网站可以自己做
  • 自己怎么建网站佛山哪家网站建设比较好
  • 长沙短视频制作公司广州网站优化注意事项
  • 北京西城网站建设公司蓬莱做网站价格
  • 网站镜像做排名网站托管工作室
  • 江苏省建设协会网站wordpress小说采集
  • 网站运行费用预算计算机学了出来干嘛
  • 什么网站上公司的评价最客观青州网站优化
  • 网站开发下载那个kk网龙岩
  • 网站页面统计代码是什么意思国外网站模板欣赏
  • 徐州社交网站传奇做网站空间
  • 网站服务器租赁怎样用ps做网站的效果图