40

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

4

6 回答 6

49

除了 Jeremy 所说的之外,它的主要好处是它有自己的一点语法糖:增强的 for-loop。如果你有一个Iterable<String>,你可以这样做:

for (String str : myIterable) {
    ...
}

很好很容易,不是吗?编译器在后台处理所有创建Iterator<String>、检查是否hasNext()和调用的脏活。str = getNext()

而且由于大多数集合要么实现Iterable,要么有一个返回一个的视图(例如Map'skeySet()values()),这使得使用集合变得更加容易。

IterableJavadoc提供了实现Iterable.

于 2009-06-29T16:10:57.710 回答
14

如果你有一个复杂的数据集,比如一棵树或一个螺旋队列(是的,我只是编出来的),但你不关心它的内部结构,你只想一个一个地获取所有元素,你明白了返回一个迭代器。

所讨论的复杂对象,无论是树、队列还是 WombleBasket 都实现了 Iterable,并且可以返回一个迭代器对象,您可以使用 Iterator 方法查询该对象。

这样,您只需询问它是否存在hasNext(),如果存在,您就可以得到该next()物品,而不必担心从树上或任何地方得到它。

于 2009-06-29T16:09:14.793 回答
5

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

List<Item> list = ...
for (Item i:list) {
 // use i
}

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

于 2009-06-29T16:11:40.657 回答
4

接口的核心是一个类应该实现的方法列表。可迭代接口非常简单——只有一种方法可以实现:Iterator(). 当一个类实现Iterable接口时,它告诉其他类您可以获取一个Iterator对象来迭代(即遍历)对象中的数据。

于 2009-06-29T16:13:00.517 回答
3

迭代器基本上允许对任何集合进行迭代。

这也是使用 Java 的 for-each 控制语句所必需的。

于 2009-06-29T16:11:33.997 回答
0

Iterable 被定义为泛型类型。

Iterable ,其中 T 类型参数表示迭代器返回的元素的类型。

实现此接口的对象允许它成为“foreach”语句的目标。for-each 循环用于遍历数组、集合。

阅读更多-:https ://examples.javacodegeeks.com/iterable-java-example-java-lang-iterable-interface/

于 2021-03-19T08:38:51.353 回答