0
foreach就是基于迭代器实现的
1
foreach需要知道自己的集合类型,甚至要知道自己集合内的元素类型,不能实现多态。这个使用的语法上都可以表示出来。foreach可以遍历任何集合或者数组,但是使用者需要知道遍历元素的类型。
Iterator是一个接口累心,它不关心集合的累心和集合内的元素类型,因为它是通过hasnext和next来进行下一个元素的判断和获取,这一切都是在集合类型定义的时候就完成的事情。迭代器统一了对容器的访问模式,这也是对接口解耦的最好表现。
2
iterator它可以随之修改元素内部的元素。可以在遍历的时刻用remove()删除元素 而foreach不可以。
3
foreac较为简便,foreach略带麻烦但是功能强大,如果都是遍历数组的话两者功能其实都一样,不停的执行下一个元素直至结束。只不过实现起来略有差异