什么是Iterable接口用于?

Joh*_*nna 36 java iterable

我是初学者,我无法理解Iterable界面的真实效果.

Mic*_*ers 45

除了Jeremy所说的,它的主要好处是它有一些语法糖:增强的for循环.如果你有,比如说Iterable<String>,你可以这样做:

for (String str : myIterable) {
    ...
}
Run Code Online (Sandbox Code Playgroud)

好不容易,不是吗?创建Iterator<String>,检查它hasNext()和调用的所有脏工作都是str = getNext()由编译器在后台处理的.

并且由于大多数集合实现Iterable或具有返回一个的视图(例如Map's keySet()或' values()),这使得使用集合更容易.

Iterable的Javadoc给出了实现类的完整列表Iterable.


Jer*_*yth 13

如果你有一个复杂的数据集,比如一个树或一个螺旋队列(是的,我只是把它做了),但你不在乎它内部的结构,你只想逐个获取所有元素,你得到它返回一个迭代器.

有问题的复杂对象,无论是树或队列,还是WombleBasket实现Iterable,并且可以返回可以使用Iterator方法查询的迭代器对象.

这样,你可以问它是否hasNext(),如果它,你得到的next()项目,而不用担心从树或哪里得到它.


Pet*_*ler 5

它返回一个java.util.Iterator.它主要用于能够在增强的for循环中使用实现类型

List<Item> list = ...
for (Item i:list) {
 // use i
}
Run Code Online (Sandbox Code Playgroud)

在引擎盖下,编译器调用list.iterator()并迭代它,为你提供ifor循环内部.

  • 到目前为止,这是最好的答案. (2认同)