集合框架_并发修改异常的产生原因及解决方案
来源:互联网 发布:unknown网络 编辑:程序博客网 时间:2024/06/05 16:04
package cn.itcast_04;import java.util.ArrayList;import java.util.Iterator;import java.util.List;import java.util.ListIterator;/* * 问题? * 我有一个集合,如下,请问,我想判断里面有没有"world"这个元素,如果有,我就添加一个"android"元素,请写代码实现。 * * ConcurrentModificationException:当方法检测到对象的并发修改,但不允许这种修改时,抛出此异常。 * 产生的原因: * 迭代器是依赖于集合而存在的,在判断成功后,集合中新添加了元素,而迭代器却不知道,所以就报错了,这个错叫并发修改异常。 * 其实这下问题描述的是:迭代器遍历元素的进候,通过集合是不能修改元素的。 * 如何解决呢? * A:迭代器迭代元素,迭代器修改元素。 * 元素是跟在迭代的元素的后面的。 * B:集合遍历元素,修合修改元素(普通for)。 * 元素在最后添加的。 */public class ListIteratorDemo2 {public static void main(String[] args) {// 创建集合对象List list = new ArrayList();// 添加元素list.add("hello");list.add("world");list.add("java");// 迭代器遍历// list.add(list.indexOf("world"), "android");// Iterator it = list.iterator();// while (it.hasNext()) {// String s = (String) it.next();// if ("world".equals(s)) {// list.add("android");// }// }// 方式1:迭代器迭代元素,迭代器修改元素。// 而Iterator迭代器却没有添加功能,所以我们使用其子接口ListIterator// ListIterator lit = list.listIterator();// while(lit.hasNext()){// String s = (String) lit.next();// if("world".equals(s)){// lit.add("android");// }// }// 集合遍历元素,修合修改元素(普通for)。for(int x = 0;x<list.size();x++){String s = (String) list.get(x);if("world".equals(s)){list.add("android");}}System.out.println("list: " + list);}}
0 0
- 集合框架_并发修改异常的产生原因及解决方案
- 集合框架(并发修改异常的产生原因及其解决方案)
- Java_基础—并发修改异常产生的原因及解决方案
- 并发修改异常的产生原因及解决方法
- 黑马程序员-java基础-并发修改异常产生的原因和解决方案
- ConcurrentModificationExeception :并发修改异常产生原因及解决方法
- java语言基础(66)——集合框架(arrayList ConcurrentModificationException 并发修改异常的解决方案)
- leaked window产生的原因及解决方案
- java.io.InvalidClassException异常产生原因及解决方案
- 3、 006 并发修改异常产生及解决的2种方法
- 在Iterator时所产生的并发修改异常问题
- 使用QWT产生error LNK2001的原因及解决方案
- JSP中文乱码的产生原因及解决方案
- 行内元素产生水平空隙的原因及解决方案
- java.lang.NoClassDefFoundError错误产生的原因及解决方案
- 游标的最大数异常产生原因及解决方法汇总
- java.lang.IllegalStateException异常产生的原因及解决办法
- java.lang.IllegalStateException异常产生的原因及解决办法
- SVM入门(十)将SVM用于多类分类
- 【TZCOO】教你做一个高逼格的演讲人
- js object ---》json
- Leetcode Matchsticks to Square 473
- 把Tomcat设置为Windows服务
- 集合框架_并发修改异常的产生原因及解决方案
- 初识HTML(二)
- Android窗口小部件APP Widget
- flask源码阅读一
- MFC之五WIN32 API串口操作2串口同步方式写
- 什么是理解?如何在人工智能中定义理解?
- 1014. Waiting in Line (30)
- 28-进程空间与 fork 函数原理
- 第三方源码移植