java next()遍历_java中iterator的Next()遍历完之后怎么回到起点

330375a141fd0bf1fe5b69708fea2467.png

12345678_0001

重新得到一个新的 Iterator 对象(还是调用 coll.iterator())。所谓遍历嘛,你已经“遍”过,下次再“遍”当然要重新开始了。如果你的集合中都没东西,你当然就没有“遍”的必要,当然是我们往集合中添加了东西我们才要遍历一下看一下其中的东西嘛。不过有一点,在迭代的过程中不能直接修改集合。比如:for(Iterator iter = list.iterator(); iter.hasNext(); ) {list.add("afewfe"); // 这个操作是非法的,它导致 iter 内缓存的位置索引失效,结果不可预料。}Java 中的迭代器是指你想对集合中的每一个元素做个操作,这个时候就不能再在不通知迭代器的情况下直接改这个集合了,通常我们为了确保迭代器在迭代过程中的位置索引是有一致的,我们支持的修改操作很有限,比如:for(Iterator iter = list.iterator(); iter.hasNext(); ) {Object current = iter.next();// 如果是我们想找的,删除它。if ( current == aaa) {iter.remove(); // 删除当前的。这个时候迭代器知道我们修改了集合,而且我们只能删除当前位置的东西,这个迭代器内部的位置索引就没有问题,如果我们删除任意位置的元素,那么迭代器当前保持的位置索引就没有意义,因此不能直接 add 或 remove 任意位置,只能通过迭代器来删除当前位置的。}}for(ListIterator iter = list.listIterator(); iter.hasNext(); ) {// 这个 ListIterator 比 Iterator 多些方法可用,因为 List 与其它集合相对它是有序的。}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值