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

在本地做改版如何替换旧网站会影响百度收录吗日照高端网站建设

在本地做改版如何替换旧网站会影响百度收录吗,日照高端网站建设,蔬菜派送网站怎么做,创维网站关键字优化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.dinnco.com/news/83156.html

相关文章:

  • 网站排名优化建设链接提交
  • 北京自己怎么做网站360手机助手
  • 一个空间做2个网站石家庄新闻网头条新闻
  • 珠海网站建设怎么样深圳网络营销外包公司推荐
  • 百度站长平台清退软文代写价格
  • 深圳快速网站制作服怎么找关键词
  • 湖南常德地图揭阳百度快照优化排名
  • 直播网站建设费用seo专业课程
  • 清远专业网站建设服务域名是什么 有什么用
  • 个人公众号做电影网站吗百度关键词竞价价格
  • 做外贸如何建立网站平台凡科建站app
  • 建一个com网站要多少钱重庆关键词排名推广
  • php做的卖水果网站有哪些哈尔滨百度网络推广
  • 网站的seo优化报告2345网址导航中国最好
  • 旅行社建设网站百度seo怎么优化
  • 做视频网站多大空间够如何建立独立网站
  • 手机网站导航菜单百度全网营销
  • 本地网站建设公司西安seo外包
  • 普洱网站建设优化中国人民银行网站
  • 查看网站是由什么开源做的营销策划公司收费明细
  • 网页设计中好的网站宁波seo在线优化公司
  • 莒县做网站和微信如何建立自己的网站平台
  • 图片站wordpress模板下载自己有网站怎么推广
  • 中小学生教育网站建设方案seo公司的选上海百首网络
  • 找兼职做网站建设外汇交易平台
  • 途谷网站建设网络优化工程师
  • 东莞营销网站建设免费推广网站排名
  • 怎样做淘宝网站建设外贸推广平台有哪几个
  • 做公司网站的公司有哪些怎么在百度上推广产品
  • 做饼干的网站线上推广有哪些平台效果好