黑马程序员技术交流社区
标题:
迭代器问题
[打印本页]
作者:
yangruijing
时间:
2015-3-4 10:29
标题:
迭代器问题
本帖最后由 yangruijing 于 2015-3-4 10:41 编辑
public class listDemo {
public static void main(String[] args) {
// TODO Auto-generated method stub
//演示列表迭代器
ArrayList al1=new ArrayList();
//添加元素
al1.add("java01");//add方法的参数类型是object,以便于接收任意类型对象
al1.add("java02");
al1.add("java03");
/*
* 要求:在迭代过程添加,修改或删除元素
*/
//迭代器
Iterator it=al1.iterator();
while(it.hasNext())
{
Object obj=it.next();
if(obj.equals("java3"))
{
al1.add("java04");
}
sop(it.next());
}
sop(al1);
}
public static void sop(Object obj)
{
System.out.println(obj);
}}
主函数中的代码能不能编译通过?不通过会出现什么问题?为什么?怎么解决?
作者:
wdhm5423
时间:
2015-3-4 10:39
本帖最后由 wdhm5423 于 2015-3-4 10:54 编辑
你的class呢、、最基本的结构
public class Demo {
public static void main(String[] args) {
}
}
复制代码
还有就是导包。迭代器遍历过程中修改元素的话,运行会报错。
作者:
田得聖老师
时间:
2015-3-4 11:09
编译是没有问题的,运行时代码第二个.next()方法会抛出NoSuchElementException异常(没有元素可以迭代)
while循环中只能调用一次.next()方法,把sop(it.next())改成sop(obj)
作者:
笑望长空,逆转
时间:
2015-3-4 12:28
我记得迭代器遍历过程中不能对集合中的数据进行修改,否则会出现异常.
作者:
zfgrinm
时间:
2015-3-4 14:26
首先,你的while循环出现了两次next(),每次next()都会取下一个元素,当集合的元素为奇数个时,就会报错。
其次,集合的Iterator里面只有hasNext(),next(),remove()三个方法,如果你想增加或者修改集合中的元素,可以选用ListIteetor迭代器,这个是List特有的迭代器,可以对元素进行增删改查。
作者:
wenyu
时间:
2015-3-4 15:48
出现的异常叫做并发处理异常。迭代器在遍历集合的同时,集合对其做了增加元素处理,就会报错
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2