在Java中,Iterator和Iterable之间有区别吗?


回答 1:

接口的名称非常合适,如果尚未给出直接答案,它们应该给您提示。 实现Iterable接口的类是-ITERABLE。

因此可以在此类上进行迭代。

例如,每个循环都使用它:

for(Item item:items){System.out.println(item); }

该代码仅在“ items”是实现Iterable接口的类的条件下起作用。

Iterable接口只有一种方法:

迭代器 iterator();

它将返回一个迭代器,并且JVM将在内部使用该迭代器来迭代您的对象。

迭代器是用于迭代另一个对象的对象。 就像智能指针对象一样,它存储状态(当前,最后,下一个,hasNext…)。

所以你可以说-Iterable是一棵梨树。 迭代器是梨。 一棵梨树“归还梨子”。 一棵梨树不是梨。

(我必须承认,这不是一个完美的例子,但是,希望您能理解;-)

在线可迭代源代码(OpenJdk):

Iterable-java.lang.Iterable(.java)-GrepCode接口源

在线迭代器源代码(OpenJdk):

迭代器-java.util.Iterator(.java)-GrepCode接口源


回答 2:

感谢您的A2A

如果某些东西实现了“ Iterable”,则可以在其上调用.iterator()方法,并提供了Iterator对象。 这在for循环中“在幕后”进行。

迭代器是一个对象实例,可以记住它在一组事物中所处的位置。 每次您询问时,它都会依次为您提供下一件事。 它还会告诉您什么时候用完了。

希望每次都有一个Iterable对象返回一个新的,新鲜的迭代器。 然后,您可以拥有几段客户端代码,它们以各自的速度进行迭代。


回答 3:

迭代器是一种简单的方法,它允许某些迭代器在没有分配特权的情况下循环访问数据集合(尽管具有删除功能)。 它跟踪当前元素以及下一个元素。

一个Iterable是一系列可以迭代的元素的简单表示。 它只是给我们一个概念,即可以迭代特定的集合,例如,我们可以从第一个元素开始并获取下一个元素,然后再获取下一个,依此类推。


回答 4:

迭代器是一种简单的方法,它允许某些迭代器在没有分配特权的情况下循环访问数据集合(尽管具有删除功能)。 它跟踪当前元素以及下一个元素。

一个Iterable是一系列可以迭代的元素的简单表示。 它只是给我们一个概念,即可以迭代特定的集合,例如,我们可以从第一个元素开始并获取下一个元素,然后再获取下一个,依此类推。