A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class List_Test {
        public static void main(String[] args) {
                List list = new ArrayList();
                list.add("Java");
                list.add("JavaWeb");
                list.add("JavaEE");
                System.out.println(list);
                  method(list);
        }
        private static void method(List list) {
                for (Iterator it = list.iterator(); it.hasNext(); ) {
                        String s = (String)it.next();
                        //判断当前元素是否为Java
                        if ("Java".equals(s)) {
                                //向集合中添加一个新的元素为"Android"
                                list.add("Android");
                        } //为什么报这样的错误 : Exception in thread "main" java.util.ConcurrentModificationException
                }
        }
}

               

评分

参与人数 1技术分 +1 收起 理由
lwj123 + 1

查看全部评分

8 个回复

倒序浏览
这个是“并发修改异常”,你在用迭代器遍历的时候不能对集合元素作添加和删除操作
回复 使用道具 举报
而List特有的迭代器ListIterstor 有向集合添加的方法;你可以这样遍历
ListIterator it=list. listiterator();
while(it.hasNext){
                        String s = (String)it.next();
                        //判断当前元素是否为Java
                        if ("Java".equals(s)) {
                                //向集合中添加一个新的元素为"Android"
                                it.add("Android");
}
回复 使用道具 举报
不用或者用it调add
回复 使用道具 举报
是并发修改异常。原则是要么全用集合的方法要么全用迭代器的方法。你这是迭代的时用集合的方法,肯定会出错,原因开始将集合中的所有元素引用都取到迭代器中,而迭代器在取出的过程中你的集合里又添加了元素,这时迭代器是取呢还是不取呢。List集合有个特有的迭代器,ListIterator里的方法很多,增删改设置都有的。
回复 使用道具 举报
代器遍历的时候不能对集合元素做任何操作、
回复 使用道具 举报
并发修改异常,不能对集合元素作添加和删除操作
回复 使用道具 举报
396460221 发表于 2015-5-8 11:01
是并发修改异常。原则是要么全用集合的方法要么全用迭代器的方法。你这是迭代的时用集合的方法,肯定会出错 ...

谢谢,理解了
回复 使用道具 举报
看看刘意老师day10天基础视频
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马