黑马程序员技术交流社区
标题:
为什么 iterator() 迭代器方法不能实现下面的程序
[打印本页]
作者:
我干阿衰
时间:
2015-5-7 21:57
标题:
为什么 iterator() 迭代器方法不能实现下面的程序
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
}
}
}
作者:
大兵在海边
时间:
2015-5-7 22:27
这个是“并发修改异常”,你在用迭代器遍历的时候不能对集合元素作添加和删除操作
作者:
大兵在海边
时间:
2015-5-7 22:34
而List特有的迭代器ListIterstor 有向集合添加的方法;你可以这样遍历
ListIterator it=list. listiterator();
while(it.hasNext){
String s = (String)it.next();
//判断当前元素是否为Java
if ("Java".equals(s)) {
//向集合中添加一个新的元素为"Android"
it.add("Android");
}
作者:
虎鹏
时间:
2015-5-8 00:20
不用或者用it调add
作者:
396460221
时间:
2015-5-8 11:01
是并发修改异常。原则是要么全用集合的方法要么全用迭代器的方法。你这是迭代的时用集合的方法,肯定会出错,原因开始将集合中的所有元素引用都取到迭代器中,而迭代器在取出的过程中你的集合里又添加了元素,这时迭代器是取呢还是不取呢。List集合有个特有的迭代器,ListIterator里的方法很多,增删改设置都有的。
作者:
欧阳文
时间:
2015-5-8 11:17
代器遍历的时候不能对集合元素做任何操作、
作者:
彭越
时间:
2015-5-8 12:25
并发修改异常,不能对集合元素作添加和删除操作
作者:
我干阿衰
时间:
2015-5-8 21:05
396460221 发表于 2015-5-8 11:01
是并发修改异常。原则是要么全用集合的方法要么全用迭代器的方法。你这是迭代的时用集合的方法,肯定会出错 ...
谢谢,理解了
作者:
王英明
时间:
2015-5-8 21:11
看看刘意老师day10天基础视频
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2