【Java】迭代器之:Iterable & Iterator

本文探讨Java中Iterator接口的作用,如何避免数据干扰,以及为何集合通过实现Iterable返回迭代器。讲解了通过Iterable接口实现的好处,包括数据访问的独立性和隔离性,并提及for-each循环与迭代器的关系。

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

在我们Java中的迭代器是一个接口,名为Iterator。他有两个抽象方法

hasNext方法:用来判断还有没有数据访问。

next方法 :用来访问集合的下一个数据。

迭代器可以访问不同特性的集合数据,而无需关心他们的内部实现。

注意:

集合并不是直接去实现Iterator接口,而是实现Iterable接口,用这个Iterable接口定义的方法,去返回当前集合的迭代器。

其中collection就继承了Iterable接口,所以collection体系的集合都得按照这种方法返回迭代器。

这样做的好处是什么?

因为集合直接实现迭代器的话,那别人调用了当前集合的next()接口,就会影响到你遍历数据。

你本来希望从头开始遍历数据的,但是可能别人已经把数据遍历完了,你就完全拿不到数据了。

而通过实现Iterable这种方式,就可以每次返回新的迭代器,不同迭代器之间遍历数据的时候互不影响。这里便可以看出迭代器是具有独立性和隔离性的。

我们试想一下,如果我们在拿迭代器在遍历的同时,集合在做增加或删除数据呢?不一样会影响到迭代器的遍历吗?Java标准库针对这种情况做了处理。这里后面再展开。

我们再使用迭代器的时候可以直接使用for-each循环来实现迭代器,其实for-each循环是Java的一个语法糖,反编译之后我们就可以发现,他用的就是迭代器。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

诗竹白芍

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值