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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

ArrayList al = new ArrayList();
  al.add(“a”);
  al.add(“b”);
  al.add(“c”);
  Iterator it = al.iterator();
  while(it.hasNext()){
String s = (String)it.next();
if(s.equals(“c”)){
al.add(“c1”);
}
}
System.out.println(al);

这段代码会抛出ConcurrentModificationException异常呢

20 个回复

倒序浏览
你增加了字符,而迭代器还是原来的,遍历就会出错.
回复 使用道具 举报
普通的迭代器不支持边迭代边增删,你用List集合特有的ListIterator 试一下

点评

正解  发表于 2015-6-4 10:34
回复 使用道具 举报
ArrayList是接口List的实现类,所以推荐以List接口来使用。
回复 使用道具 举报
楼上说的是,我把你的代码拿来弄了弄还没改过来,迭代器卡住了,还在解决
回复 使用道具 举报
用迭代器遍历的过程当中别改变集合的长度。建议修改方法:
1.用LIST集合的特有迭代器ListIterator
2.用list集合的   get() size() 方法组合遍历。
回复 使用道具 举报
集合可以存放任意类型的对象。Iterator在迭代的时候不能进行add().
回复 使用道具 举报
用迭代器遍历的过程当中别改变集合的长度,会引发《并发修改异常》

建议修改方法:
1.用LIST集合的特有迭代器ListIterator
2.用list集合的   get() size() 方法组合遍历。
回复 使用道具 举报
灞波儿奔 发表于 2015-6-4 00:00
用迭代器遍历的过程当中别改变集合的长度,会引发《并发修改异常》

建议修改方法:

原来是这样啊,谢了
回复 使用道具 举报
想要那片海 发表于 2015-6-3 22:26
普通的迭代器不支持边迭代边增删,你用List集合特有的ListIterator 试一下

我试过了 谢了
回复 使用道具 举报
想要那片海 发表于 2015-6-3 22:26
普通的迭代器不支持边迭代边增删,你用List集合特有的ListIterator 试一下

谢了  我试过了
回复 使用道具 举报
shao122791159 发表于 2015-6-3 23:26
用迭代器遍历的过程当中别改变集合的长度。建议修改方法:
1.用LIST集合的特有迭代器ListIterator
2.用lis ...

我试过了,小问题,纠结了半天好尴尬 啊
回复 使用道具 举报
该迭代器只支持删,不支持添加,查一下API文档
回复 使用道具 举报
看到这个帖子突然明白了一道题该怎么做了,谢谢
回复 使用道具 举报
只要是对象,都可以存
回复 使用道具 举报
并发修改异常。iterator 在遍历时不能操作数组
回复 使用道具 举报
说错了 是集合
回复 使用道具 举报
都是大神,多问问挺好的
回复 使用道具 举报
al.add(“c1”);  这句话引起了并发修改异常(currentmodificationexception) 在使用迭代器时不能使用集合对象调用能够改变集合结构的方法。
回复 使用道具 举报
路过学习学习
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马