我是Java的新手,我真的很困惑迭代器和可迭代器。谁能给我解释一下并举几个例子吗?


当前回答

基本上来说,这两者都是密切相关的。

将Iterator视为一个接口,它帮助我们在一些未定义的方法(如hasNext(), next()和remove()的帮助下遍历集合。

另一方面,Iterable是另一个接口,如果由类实现,则强制该类为Iterable,并且是for - each构造的目标。 它只有一个名为iterator()的方法,该方法来自iterator接口本身。

当一个集合是可迭代的,那么它可以使用迭代器迭代。

为了了解,请访问以下内容:

ITERABLE: http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/java/lang/Iterable.java

迭代器http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/java/util/Iterator.java

其他回答

问:Iterable和Iterator的区别? 答:

iterable:它与forEach循环相关 iterator: Is与Collection相关

forEach循环的目标元素应该是可迭代的。 我们可以使用Iterator从集合中逐个获取对象

java中存在可迭代对象。ḷang包 java中的迭代器。util包

只包含一个方法迭代器() 包含三个方法hasNext(), next(), remove()

1.5版引入 1.2版引入

基本上来说,这两者都是密切相关的。

将Iterator视为一个接口,它帮助我们在一些未定义的方法(如hasNext(), next()和remove()的帮助下遍历集合。

另一方面,Iterable是另一个接口,如果由类实现,则强制该类为Iterable,并且是for - each构造的目标。 它只有一个名为iterator()的方法,该方法来自iterator接口本身。

当一个集合是可迭代的,那么它可以使用迭代器迭代。

为了了解,请访问以下内容:

ITERABLE: http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/java/lang/Iterable.java

迭代器http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/java/util/Iterator.java

正如这里所解释的,“Iterable”被引入是为了能够在foreach循环中使用。实现Iterable接口的类可以被迭代。

Iterator是在Iterable上管理迭代的类。它维护当前迭代中我们所处的状态,并知道下一个元素是什么以及如何获取它。

假设有10个苹果。 当它实现Iterable时,就像把每个苹果放在从1到10的盒子里,并返回一个可用于导航的迭代器。

通过实现迭代器,我们可以得到任何apple, apple in next boxes等等。

实现iterable提供了一个迭代器来导航它的元素,尽管要导航,迭代器需要被实现。

在java中的每个循环中都引入了Iterable

public interface Collection<E> extends Iterable<E>  

Iterator是在Iterable上管理迭代的类。它维护当前迭代中我们所处的状态,并知道下一个元素是什么以及如何获取它。