Iterator是一个迭代器接口,Iterable是一个与迭代器相关联的接口,接口里面定义了一个抽象方法iterator()。使用这个接口
的iterator方法可以返回一个迭代器实例。实现了Iterable的接口,可以使用foreach()进行遍历。在编译器会对foreach进行
优化,转换成迭代器的hasNext()和next()的调用。之所以,设计Iterable这个接口,而不是直接实现Iterator。主要是为了
迭代器之间不会相互干扰。若果设计成实现Iterator,由于它的核心方法都是依赖当前位置的,则该实现类都是要保存当前的
位置指针的。当集合在方法中进行传递时,他的位置是不可预知的。例如,当对某个list集合中,包含了10个元素。在一个
方法中,遍历前面若干元素。当我想要在另一个方法中,每次都重新开始遍历。这个时候就很难做到,除非每次都是重置reset
这个设计是非常不合理的。因此使用一个Iterable,每次都创建新的迭代器,之间不会相互干扰。
关于foreach、Iterable、Iterator的一点理解
最新推荐文章于 2025-07-04 00:11:16 发布