题
我是初学者,无法理解其实际效果 Iterable
界面。
解决方案
除了 Jeremy 所说的之外,它的主要好处是它有自己的语法糖:这 增强的for循环. 。比如说,如果你有一个 Iterable<String>
, , 你可以做:
for (String str : myIterable) {
...
}
又好又简单,不是吗?创建的所有肮脏工作 Iterator<String>
, ,检查是否 hasNext()
, ,并调用 str = getNext()
由编译器在幕后处理。
由于大多数集合要么实现 Iterable
或者有一个返回一个的视图(例如 Map
的 keySet()
或者 values()
),这使得使用集合变得更加容易。
这 Iterable
Java文档 给出了实现类的完整列表 Iterable
.
其他提示
如果你有一个复杂的数据集,就像一棵树或螺旋队列(是的,我刚刚作出了),但你的不在乎的它是如何在内部结构,你只是想得到一个所有要素之一,你得到它返回一个迭代器。
有问题的复杂的对象,可以是一个树或队列或WombleBasket实现可迭代,并且可以返回一个迭代器对象可以查询使用迭代方法。
这样的话,你可以问它,如果它hasNext()
,如果确实如此,你得到的next()
项目,而不用担心从哪里树或其它地方得到它。
它返回一个java.util.Iterator
。它主要用于以能够在增强的for循环
List<Item> list = ...
for (Item i:list) {
// use i
}
引擎盖下,编译器调用list.iterator()
和迭代它给您i
内部的for循环。
接口是在其心脏的一个类应该实现的方法的列表。该迭代器的界面非常简单 - 只有一种实现方法:Iterator()
。当一个类实现的Iterable
接口,它告诉其他类就可以得到一个Iterator
对象,以便迭代(即,移动)的数据中的对象。
迭代基本上允许迭代过任何集合。
这也是什么是需要使用Java对,每个控制语句。