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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© yangruijing 中级黑马   /  2015-3-4 10:29  /  1032 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 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);
        }}
主函数中的代码能不能编译通过?不通过会出现什么问题?为什么?怎么解决?


5 个回复

正序浏览
出现的异常叫做并发处理异常。迭代器在遍历集合的同时,集合对其做了增加元素处理,就会报错
回复 使用道具 举报
首先,你的while循环出现了两次next(),每次next()都会取下一个元素,当集合的元素为奇数个时,就会报错。
其次,集合的Iterator里面只有hasNext(),next(),remove()三个方法,如果你想增加或者修改集合中的元素,可以选用ListIteetor迭代器,这个是List特有的迭代器,可以对元素进行增删改查。
回复 使用道具 举报
我记得迭代器遍历过程中不能对集合中的数据进行修改,否则会出现异常.
回复 使用道具 举报
编译是没有问题的,运行时代码第二个.next()方法会抛出NoSuchElementException异常(没有元素可以迭代)
while循环中只能调用一次.next()方法,把sop(it.next())改成sop(obj)
回复 使用道具 举报
本帖最后由 wdhm5423 于 2015-3-4 10:54 编辑

你的class呢、、最基本的结构
  1. public class Demo {

  2.         public static void main(String[] args) {
  3.         }
  4. }
复制代码
还有就是导包。迭代器遍历过程中修改元素的话,运行会报错。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马