【Java】迭代器之:Iterable & Iterator

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

【Java】迭代器之:Iterable & Iterator_第1张图片

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

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

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

注意:

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

【Java】迭代器之:Iterable & Iterator_第2张图片

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

这样做的好处是什么?

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

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

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

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

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

你可能感兴趣的:(每日分享,java)