同一个Iterator迭代器只能遍历一次

今天在学习的时候,碰到用迭代器去遍历集合的时候一直没有元素输出,琢磨了好久我才知道 “同一个迭代器只能遍历一次,如果写了两个遍历,则第二个遍历无法输出”

我的问题原因"我想删掉集合中的一个元素然后再遍历输出,结果输出结果还是没有删除之前的"

public void test5(){
        /*
        迭代器当中的 remove方法
         */
        Collection collection=new ArrayList();
        collection.add(1234);
        collection.add(new String("123"));
        collection.add(new Person(18,"Jerry"));
        Iterator iterator = collection.iterator();

        while (iterator.hasNext()){
            Object next = iterator.next();//next() 方法返回的是下一个对象
            if (next.equals("123")){
                iterator.remove();
            }
            System.out.println(next+"***");
        }

        while (iterator.hasNext()){
            System.out.println(iterator.next()+"$$$$");
        }

    }
运行结果	:这就说明下一个迭代器根本没执行
1234***
123***
Person{age=18, name='Jerry'}***

经过我翻阅资料,才弄明白同一个迭代器只能遍历一次,于是再造一个迭代器,即可解决问题

  public void test5(){
        /*
        迭代器当中的 remove方法
         */
        Collection collection=new ArrayList();
        collection.add(1234);
        collection.add(new String("123"));
        collection.add(new Person(18,"Jerry"));
        Iterator iterator = collection.iterator();

        while (iterator.hasNext()){
            Object next = iterator.next();//next() 方法返回的是下一个对象
            if (next.equals("123")){
             iterator.remove();
           }
            System.out.println(next+"***");
        }
        Iterator iterator1 = collection.iterator();
        while (iterator1.hasNext()){
            System.out.println(iterator1.next()+"$$$$");
        }
    }
修改后的运行结果:正常遍历输出了 
1234***
123***
Person{age=18, name='Jerry'}***
1234$$$$
Person{age=18, name='Jerry'}$$$$

总结:解决问题的过程是痛苦的,但是成功解决让人真的很开心!!!

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值