关于foreach、Iterable、Iterator的一点理解

本文详细介绍了Java中Iterator迭代器与Iterable可迭代接口的区别与联系,解释了为何使用Iterable而非直接实现Iterator的原因,避免迭代器之间的相互干扰。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值