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 个回复

正序浏览
路过学习学习
回复 使用道具 举报
al.add(“c1”);  这句话引起了并发修改异常(currentmodificationexception) 在使用迭代器时不能使用集合对象调用能够改变集合结构的方法。
回复 使用道具 举报
都是大神,多问问挺好的
回复 使用道具 举报
说错了 是集合
回复 使用道具 举报
并发修改异常。iterator 在遍历时不能操作数组
回复 使用道具 举报
只要是对象,都可以存
回复 使用道具 举报
看到这个帖子突然明白了一道题该怎么做了,谢谢
回复 使用道具 举报
该迭代器只支持删,不支持添加,查一下API文档
回复 使用道具 举报
shao122791159 发表于 2015-6-3 23:26
用迭代器遍历的过程当中别改变集合的长度。建议修改方法:
1.用LIST集合的特有迭代器ListIterator
2.用lis ...

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

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

我试过了 谢了
回复 使用道具 举报
灞波儿奔 发表于 2015-6-4 00:00
用迭代器遍历的过程当中别改变集合的长度,会引发《并发修改异常》

建议修改方法:

原来是这样啊,谢了
回复 使用道具 举报
用迭代器遍历的过程当中别改变集合的长度,会引发《并发修改异常》

建议修改方法:
1.用LIST集合的特有迭代器ListIterator
2.用list集合的   get() size() 方法组合遍历。
回复 使用道具 举报
集合可以存放任意类型的对象。Iterator在迭代的时候不能进行add().
回复 使用道具 举报
用迭代器遍历的过程当中别改变集合的长度。建议修改方法:
1.用LIST集合的特有迭代器ListIterator
2.用list集合的   get() size() 方法组合遍历。
回复 使用道具 举报
楼上说的是,我把你的代码拿来弄了弄还没改过来,迭代器卡住了,还在解决
回复 使用道具 举报
ArrayList是接口List的实现类,所以推荐以List接口来使用。
回复 使用道具 举报
普通的迭代器不支持边迭代边增删,你用List集合特有的ListIterator 试一下

点评

正解  发表于 2015-6-4 10:34
回复 使用道具 举报
你增加了字符,而迭代器还是原来的,遍历就会出错.
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马