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

做网站赚钱流量美容院做免费推广哪个网站

做网站赚钱流量,美容院做免费推广哪个网站,网站ping值,wordpress数据库安装ConcurrentModificationException并发修改异常 原因分析 可以通过遍历索引也可以通过迭代器进行遍历。在我们使用迭代器进行遍历集合的时候,会获取到当前集合的迭代对象。在里面有封装了迭代器的remove方法与集合自带的remove方法,如果我们调用迭代器对…

ConcurrentModificationException并发修改异常

原因分析

可以通过遍历索引也可以通过迭代器进行遍历。在我们使用迭代器进行遍历集合的时候,会获取到当前集合的迭代对象。在里面有封装了迭代器的remove方法与集合自带的remove方法,如果我们调用迭代器对象的remove方法是没问题的,但是当我们调用集合自带的remove方法时,就会产生ConcurrentModificationException 并发修改异常。也就是说,当我们通过非迭代器进行遍历集合的时候,是不允许集合本身在结构上发生变化的。
增删操作会导致 预期数量和 计数器的数量不一致,就会导致并发修改异常

解决方式

1,ListIterator列表迭代器(list特有的迭代器),将添加、删除元素交给迭代器去做,而非集合

List<String> list = new ArrayList<>();
list.add("A");
list.add("B");
list.add("B");
list.add("C");ListIterator<String> stringListIterator = list.listIterator();
while (stringListIterator.hasNext()) {String element = stringListIterator.next();if(StringUtils.equals(element,"C")) {// 在遍历时向列表中添加元素stringListIterator.add("D");}
}
System.out.println(list);//[A, B, B, C, D]

2,普通for循环删除时需要从后往前删除,因为从前往后删除可能会漏删(删除第一个B之后,索引到2,但是本来索引2的元素第二个B却来到了索引1的位置)

List<String> list = new ArrayList<>();
list.add("A");
list.add("B");
list.add("B");
list.add("C");for (int i = list.size()-1; i >= 0; i--) {if(StringUtils.equals(list.get(i),"B")) {list.remove("B");}
}System.out.println(list);

3,使用CopyOnWriteArrayList集合,底层解决并发修改异常,就可以使用集合的增删方法在遍历时操作

List<String> list = new ArrayList<>();
list.add("A");
list.add("B");
list.add("B");
list.add("C");CopyOnWriteArrayList<String> copyOnWriteArrayList = new CopyOnWriteArrayList(list);
for (String ele :copyOnWriteArrayList){if(StringUtils.equals(ele,"C")) {// 在遍历时向列表中添加元素copyOnWriteArrayList.add("D");}
}System.out.println(copyOnWriteArrayList);//[A, B, B, C, D]

4,当遍历时需要删除元素时,可以使用普通迭代器,普通迭代器没有新增方法

List<String> list = new ArrayList<>();
list.add("A");
list.add("B");
list.add("B");
list.add("C");
//普通迭代器,只能删除,没有add
Iterator<String> iterator = list.iterator();
while (iterator.hasNext()){String next = iterator.next();if(StringUtils.equals(next,"B")) {iterator.remove();//迭代器删除第一个B,然后hasNext拉到下一个B,迭代器再删除一次}
}
System.out.println(list);//[A, C]

5,增强for循环底层采用迭代器,遍历时删除(新增)只能用集合的删除(新增)方法,还会报并发修改异常

List<String> list = new ArrayList<>();
list.add("A");
list.add("B");
list.add("B");
list.add("C");for (String element : list) {//Caused by: java.util.ConcurrentModificationException: nullif(StringUtils.equals(element,"B")) {list.add("B");}
}
System.out.println(list);//[A, B, B, C, D]
http://www.sczhlp.com/news/112338/

相关文章:

  • 太原加盟网站制作简单html代码
  • 网站顶部flash下载绵阳做最好优化网站的
  • 单页面网站建设天津网站建设公司电扬
  • 果乐宝的网站建设企业管理系统包括哪些
  • 电子商务网站的重要性菏泽网站建设谁最出名
  • 帝国cms做网站怎样维护有源代码如何做网站
  • 女朋友做网站网页制作工具可以分为
  • 深圳公司排名100强信息流优化师培训
  • 银行需要网站开发人员吗网站建设注册
  • 移动应用还是网站开发2017做哪些网站能致富
  • 成都专业手机网站建设服务电脑室内设计软件
  • 鱼台建设局网站平度做网站推广
  • 国产化DevOps生态崛起:Gitee如何赋能企业数字化转型
  • 【IEEE出版】2025年电气、控制与人工智能国际学术会议(ICOECAI 2025)
  • 采购计划 vs 物料需求计划(MRP),采购新手最容易搞混的两份“清单”!
  • P10299 [CCC 2024 S5] Chocolate Bar Partition
  • 营销策划好的网站做彩票网站收费标准
  • 建设银行签名通在网站哪里下载山东爱易网站建设工作室
  • 做网站代理怎么样页面设计说明怎么写
  • 别人建的网站怎么修改代码直播系统平台搭建
  • 免费网站模板怎么用建设网站需要服务器
  • 湖南网站建设有限公司做一个wordpress模板下载地址
  • 秦皇岛网站建设系统推荐电子商务网站建设步骤百度文库
  • 企业网站规划原则上海工商管理局官网
  • 连接国外网站的app龙岩网站建设龙岩网站制作
  • 诸暨做网站公司网站开发语言和数据库有几种
  • 实用指南:企业实施数字化转型时常见的挑战
  • 当ARMxy+AI边缘计算落地水泵行业就碰撞出怎样的火花?
  • QN8035 FM芯片驱动开发
  • 再见 Claude Code,我选择了 Codex!真香!!