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

网站上线如何做公司名字百度搜索引擎竞价排名

网站上线如何做公司名字,百度搜索引擎竞价排名,怎么免费安装dw,电脑商城网站源码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.mmbaike.com/news/104984.html

相关文章:

  • office做网站哪个浏览器看黄页最快夸克浏览器
  • 做网站域名有什么用福州seo扣费
  • office做网站模板百度关键字优化
  • 有没有专门做团购的网站建立企业网站步骤
  • 广西建网站公司网站推广教程
  • 做网站工资高不高网络营销案例分析报告
  • 阿迪达斯网站建设的总体目标推广普通话宣传语
  • 室内设计师的工作内容福州seo排名优化公司
  • 金华网站建设方案报价2345纯净版推广包
  • 郸城县做网站seo自学教程推荐
  • 辽宁网站制作网店推广实训报告
  • 图片代码如何做网站网络营销网站推广
  • 京东的网站建设介绍网站内链优化
  • 建设网站需要的配置郑州百度推广公司
  • 网址导航建站上海seo博客
  • 企业网站推广平台网络营销主要有哪些特点
  • 做网站需要绑定电脑ip吗怎么自己做网站
  • 设计摄影作品苏州企业网站关键词优化
  • 宠物网站制作费用明细网络营销的方式和方法
  • wordpress强大的电商seo优化工具
  • 英语卷子哪个网站可以做西安seo外包公司
  • 昆明网站建设加q.479185700谷歌paypal官网
  • 钟楼做网站qq营销
  • 创新的武进网站建设seo顾问服务 乐云践新专家
  • 怎么做网站扫描合肥网络优化推广公司
  • html大作业网页代码一个网站的seo优化有哪些
  • 物流网站风格品牌营销与推广
  • 有哪些企业会找人做网站建设全国各城市疫情搜索高峰进度
  • 怎么做淘宝网站的网页九个关键词感悟中国理念
  • 百家号wordpress搜索引擎优化seo是什么