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()
项目,而不用担心从树或哪里得到它.
它返回一个java.util.Iterator
.它主要用于能够在增强的for循环中使用实现类型
List<Item> list = ...
for (Item i:list) {
// use i
}
Run Code Online (Sandbox Code Playgroud)
在引擎盖下,编译器调用list.iterator()
并迭代它,为你提供i
for循环内部.