Foreach与迭代器模式的区别

Foreach与迭代器模式的区别

所谓迭代器模式就是一个被大量使用的固定接口,如果我们需要便利一个集合时对元素进行操作的话使用迭代器十分方便。

而Foreach是在Java SE5中出现的一种对集合遍历的句型,也被称作for/in句型,主要用于大部分Collection的遍历(不包括各种Map)和数组的遍历。

  1. Foreach通常用于一次性遍历整个集合,通常不会暂停,大大提升了代码的简洁性和可阅读性。而Iterator可以更好地控制便利过程的每一步。

  2. Foreach在遍历过程中严禁改变集合的长度,进行对集合的删除或添加等操作,而使用Iterator可以在遍历过程中对集合元素进行删除操作。Iterator中的remove()方法只能删除当前迭代器返回的最后一个元素,也就是说,每调用一次next()只能调用一次remove(),如果要在遍历过程中对集合添加元素,需要使用ListIterator,是List专用。

  3. 迭代器模式可以和组合模式一起使用,来控制树状结构的遍历。

  4. Foreach的内部实现是通过迭代器来完成的,实现Iterable接口的类可以使用Foreach句型,Iterable中的iterator()方法返回遍历所用的迭代器。虽然数组也可以使用Foreach句型,但数组并不是Iterable。

  5. Map虽然不能使用Foreach,但可以通过Map.Entry来对Map进行Foreach遍历

    for(Map.Entry entry :map.entrySet()){}

  6. Iterator属于java.util包,Iterable属于java.lang包

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值